Keep uniqiue email addresses in Excel - duplicates

I have a spreadsheet which lists the data of 2,000 people from multiple databases.
My spreadsheet lists duplicate email addresses because for example - they may have given their personal address in one database and their personal and work address in another database.
Each person has a row, and I have 6 columns with email addresses. I need to keep only unique email addresses for each person and remove duplicates. Does anyone know how to do this? I have tried removing duplicates, conditional formatting, advanced filter and none of these things seem to suit this scenario.
example data

Copy the following formula to cell H2 in your exemple, then drag it to column M and all the way down.
=IF(COUNTIF($B2:B2,"="&B2)<2,B2,"FALSE")
This will create a copy of your original 6 columns (at H-M), with all duplicates or empty cells replaced by "FALSE". Afterward do copy&paste values, and there you go.
Explanation:
for each target cell we check the value of the cell 6 columns to the left (H2-->B2).
The countif range is column B to the examined cell (included), in the same row.
if the examined value appears only once in the range (itself), it's being copied to the target cell, otherwise we set FALSE.

Related

Can I create a List Generator based on specific Data Criteria

I have a workbook that contains a comprehensive list of Test Scenarios my developers are responsible for. In the workbook I would like to create a "generator" that will return a complete list of tests that need to be completed based on a specific criteria.
Criteria List. When a specific answer is selected on Sheet2 it correlates to a specific column on Sheet3, and I want to populate all rows associated with that answer AND remove duplicates onto Sheet1.
For example If B2 in Sheet2 is Yes, then I want to return all rows from Sheet3 where YES appears in Column D but if Sheet2!B2 is No, I want to return all rows where No appears in Sheet3!D.
I can successfully queue an individual line/criteria using ARRAYFORMULA(IF(TestCaseGenerator!B2="YES", IF(Disputes1!D:D="YES",Disputes1!A:M,""),""))
But I have tried several =ARRAYFORMULA, =IFS, =QUERY combinations and as I stack the criteria the formula breaks; I get one of two errors:
a parse erorr and as of yet cannot determine where exactly the formula is breaking down
Not enough arguments
I know a script may be a better option, but have not written many scripts and am unsure where to even start.

Similar to UNIQUE customers by date

I'm trying to create an organizer to my payments sheet, it's a sheet that receives all payments and I want to show only the last payment for each user, I want do this to know how much time user stay with us!
I don't have idea how to do it, I'm trying use UNIQUE but this doesn't work fine!
Can you help me?
Demo sheet: https://docs.google.com/spreadsheets/d/169FgYI4v43WnFhAlcfrXnOtzvBKMNbQBvGsQ7W41HcE/edit?usp=sharing
I've set up a new sheet called "Erik Help" with this formula in F1 (highlighted bright green):
=ArrayFormula({"Client name"\"Payment date";VLOOKUP(UNIQUE(FILTER(B2:B;B2:B<>""));SORT(B2:C;2;0);{1\2};FALSE)})
You can see that the formula generates the headers first.
Underneath that, the unique list of clients ...
UNIQUE(FILTER(B2:B;B2:B<>""))
... is looked up within a SORT of the client and payment data, sorted descending by date (which leaves the most recent dates at the top and working down).
The virtual range {1\2} is returned, which is each name and date from the UNIQUE list.
Since VLOOKUP only returns the first match it finds (if any), you'll always get the most recent date per client.
I am not sure where is the data I should use within your sheet. So let's work on dummy table (it's in your spreadsheet as sheet 'Dummy'):
First I take a list of transaction and get unique client names:
=unique(B2:B)
Then I use vlookup formula to search for the first appearance of the client on payment list.
Ifna is used to hide error messages
Arrayformula makes vlookup possible to work on whole column without copying.
=ArrayFormula(ifna(vlookup(G2:G;$B$2:$C;2;true)))

How to apply a formula to a certain cell in Google Sheets when row is updated and a certain cell has a certain value?

I have a Google Sheet is being updated through two channels, an App through Appsheet, and an automated workflow from Zapier. Both add new rows for new bookings. The updates which come through the App work perfect, this is the main way of working. Now, I want to add information coming in through Zapier. Problem is that not all the information coming from Zapier is in the right format.
Please see the Sheet here.
If the data comes through Zapier, a new row will be created by Zapier and all columns except for Column C 'Driver ID'. I need this cell to be automatically updated. I can do this with an IndexMatch linking to another sheet with an overview of all the names and ID's. However, Zapier will always create a new row and therefore there will be no formula.
If data comes in through Appsheet all columns will be filled out except for Column E 'Driver Name'. There is no need for this since this information is already included in the Driver ID.
What I want to do is, apply a formula to Column C, if a value appears in Column E. If no value appears in Column E than there is no need for a formula in Column C. How can I trigger the placement of an (IndexMatch) formula for the cell when a certain cell has a text-value?

Imported range time values dont match source range time values Google sheets script

I have simple google spreadsheet with two sheets: sheet1 and sheet2. In sheet2 there are time values in column A which I am trying to copy to column A in sheet2. I wrote a script(please see link) for it but values are not the same. What class/method do I need to use in order to get same values in both sheets.
I noticed if I format column A values in sheet2 to text than I get matching values but problem is I am not allowed to that and that column must remain formatted as time.
Also, my second question(please ignore if its off topic). If I have work schedule in google sheet for 3 employees: John,Peter and Mike and they all have editing permissions. If Mike decides to use filter to filter out just his work schedule, is it possible for other two employees to have unedited sheet(as I believe Mike's actions will affect other two persons). What I mean is, is it possible to restrict one persons actions just to view he is looking at while other have unaffected version(together work schedule in this case)?
link for spreadsheet:
https://docs.google.com/spreadsheets/d/1tOtwzM0CxDHBXzC8ECeXlfaTGC4i7rH2XMYYszqRINM/edit?usp=sharing
Much appreciated.
not entirely sure what the problem is, your script is working as intended and you have the same values in sheet1 as in sheet2. The only difference is that in Sheet1 you have a date format and on sheet2 you only indicate the time. I have changed the number format in the sheet1 and as you can see it's the same.
The problem you are having is that by indicating only the time, you let the sheet assume any date. For time it's not that big a deal, but you must be sure that time formats are the same. use getNumberFormat() and setNumberFormat() (read here) to set the correct formats when copying or have the formatting set in advance
As for filtering — you can simply give them view-only access and let them use filtere views (right under "Filter"). A filter will hide information for everyone on the sheet, while a filter view will only be visible to that person. You can also pre-set filter views for them as those with edit access can save filter views.

Compare one column in excel to another column in excel and find duplicate values

I was just wondering if there was an easy way in Excel to complete the following task:
In my Excel spreadsheet I have two tabs. One tab represents one database and the other tab represents a different database. I have a column of data that is 1500+ rows long from my first database(tab) that looks like this:
In the other tab, I have another column that is similar to the above column. My goal is to be able to compare the above column to the other column in the separate tab, and search for duplicate values.
So for example the first code in the above column is 00064. It would search the specified column in the separate tab for the code 00064. If it finds it I would need to be alerted or have it logged somehow. Then it would move on to the next code, 00368 and repeat the process for every cell inside that column. I hope this makes sense. Please feel free to ask any questions you may have for further clarification.
My desired outcome is to ween out the duplicate values but I am not sure how to go about this because due to the length of my columns, manual comparisons would take quite some time. If there is a macro that could accomplish this it would make my life so much easier.
I greatly appreciate any help that can be offered.
Thank you!
-Dave
No need for VBA here. In the first cell of your second column (B1) of your first tab use a countif formula:
=countif(tab2!A:A, A1)
Copy this formula down so it is next to every populated cell in Column A. This will return the number of records in Tab2 that are equal to A1 in your first tab. Look for anything > 0 to find things that have a match, or things > 2 for duplicates.
You can extend this with an if statement like
=if(countif(tab2!A:A, A1)>2, "Duplicate", countif(tab2!A:A, A1)=1, "Only one Match", "No Match"))
This does not require the use of a macro. I would use a VLOOKUP formula. If an exact match is found between the columns it will return the columns value. If no match is found the cell will read #N/A.
An example of the formula that compares the cell A1 on Sheet1 to the column A on Sheet2 looks like this:
=VLOOKUP(A1,Sheet2!A:A,1,)
Here is documentation on how to use this formula.