Is there a way to filter duplicates from an inline list?

This sounds great!

THANK YOU! I couldn’t make this code work in my spreadsheet, but was able to make shchc’s count work. I am able to filter in glide, but it omits the duplicates entirely. And I need at least one instance of that record. most have a count of 1 but anything more (2-7) I have tried different filters to at least get them to appear once, maximum.

Simply remove the * from the formula and it will work :sunglasses:

See below




Never noticed that typo, thanks for pointing out! Edited the original post now.


yup! Amazing… I And then i filtered my inline list using this array instead of combining the two. And I got what I needed! have to go back and study why that code worked and how it is different from the other…!

Question for group, since I used an array in the spreadsheet, then I wouldn’t be able to share or sell the app on glide…correct?

You could still share/sell the app on glide while using spreadsheet formulas. When the app is copied, so is the underlying GSheet.

It is encouraged to build what you can in Glide vs GSheet w/ formula. The performance difference is significant. I hope this helps!

This is what I would do if you wanted to keep everything within glide. First I would recommend having a RowID which will give every row a unique value. This will become important in a little bit. Then I would identify a unique value for each contact, whether it’s a name, phone number, email address, or something else that you know will be in each duplicate row, but is still unique only for that specific person. Let’s assume Name for now. Create a self relation that links the contact’s Name column back onto itself. Make sure this is a single relation. It should always find the first matching row for that contact. Next create a Lookup column that returns the Row ID for the first matching row. Finally create an IF THEN column that will check if the RowID for the row matches the RowID returned from the first matching row in the Lookup column. If it’s a match, then that contact row is the first unique row and you can return a value of ‘true’. If it’s not a match, then the row is most likely a duplicate and you can return a value of ‘false’. Now you can filter your list to only show the ‘true’ rows.

All of this is inside Glide and doesn’t require any sheet formulas…but I would consider reworking your app someday to make this more efficient instead of duplicating data.


Great information. That is something I thought I should do …well after i started creating the app… and when I go back to fix it then I’ll definitely use that!

1 Like

Jeff, let me ask you. If I take my current spreadsheet and add Row ID’s, would I have to delete the duplicate rows first? and then add them back in? Lucky there are only about 9 contacts with 2 or more listings.

No you wouldn’t have to change anything or modify any of your current data. What I wrote is assuming that you leave everything as you currently have it. You should be able to follow the directions and get what you want without having to rely on any sheet formulas.

1 Like

Ok. That worked! I am still so new to this and playing with it. What happens now, as with the previous array I was using in google sheets, is that, sometime a person changes office and I want to keep that current info in its inline list in addition to the older office’s inline list, but it seems to only keeps the contact in the first company that was listed.

i.e Peter started in Company 1: Below him is an inline list for that Company 1 and the others in the Company 1.

If I click on the people in that Company 1, it takes me to their details page and Peter is listed in their inline list for that Company 1.

Peter Goes to Company 2: Below him is an inline list for that company 2 and the others in the Company 2.

However with this one, If I click on the people in that Company 2, it takes me to their details page and Peter is NOT listed in their inline list for that current Company 2.

What I am doing is keeping track of every meeting I have personally had with Peter and the company he is was with at the time of that meeting. But would want the most recent company 2 to definitely have him listed in their inline list not necessarily in the older company 1.

Ideally, It seems I need a row ID associated with the name only, no matter what company or how many times I meet them. They are always connected to that name. But it seems like I would have to have names in a separate sheet first? Still researching how to do it all. In a fun deep dive.

Ok, what I would do is then change your relation to a multiple relation. Then instead of a lookup, create a Single Value column that uses the relation to return the Last RowID, which would be the most recent entry. Then change your If Then column to compare the row’s RowID to the Single Value column. This should always make the last matching row for each contact the ‘true’ row instead of the first matching row.


This is superb. I just used this technique to replace some arrayformulas that were using unique/filter, and saved myself about 500 rows in the process. Love it!


That did work. Thanks Jeff. My only glitch now is when I am looking at their details card and see the office list below, that persons picture is there too. Not that it’s a big deal, which I am beginning to not mind, but how cold I omit that person from appearing in the office list when I am looking at their details card: to maintain the “Other People in this office” list without seeing them too?

1 Like

That sounds amazing. I am glad my problem brought Jeff in with that solution for you too!

1 Like

You should be able to filter the list using Screen Values where the name is not the name of the current contact being viewed.


Thank you Jeff. That makes so much sense. I truly enjoy learning these bits that allow me to re-evaluate my problem solving skills!


Hi Jeff,
This solution looks great, but I couldn’t get it to work :frowning:
I’d like to check if a client name is repeated, so we can put a warning text for the users to notice there is more than one client with the same exact name. I think that I did what you mentioned:

  1. Relation column - client name to itself

  2. SV column - last ROW ID

  3. ITE column - current ROWID to SV column

What Have I missed?

And what was the result? What you are showing looks OK if that is the intended result you want, although it might not apply to your particular situation. What is the problem you are running into? What is not working? Your current setup should mark each duplicate row as ‘true’, except for the last row within a same name, or any row that is not a duplicate. Last row names and non duplicate names will be false with the way you have set up your columns.

But, wouldn’t it be more beneficial for your use case if you kept the same relation, but got rid of the single value and IF columns and replaced them with a Rollup Count column instead? Then any name with a count greater than 1 would be a duplicated name.

1 Like

Thanks, that works perfectly!