Forum Discussion
robywoo
Mar 11, 2022Copper Contributor
Return unique values in one column but with duplicate entries in another column for Excel
I have a spreadsheet where I need to know of the employees' ID in column C how many unique entries there are in column A. For example (Fig 1) Smith (1234) has 2 entries in col C but has 1 unique entry in col A, bill has 5 entries but 3 are unique, Fred has 2 entries in Col C but has 2 unique entries in Col A. So my resulting spreadsheet would be 2 columns with entries like:
1 | 1234 |
2 | 2345 |
2 | 5963 |
3 | 5964 |
Fig 1 (data set example)
Position | Employee | ID |
5851 | Smith | 1234 |
5851 | Smith | 1234 |
9162 | jones | 2345 |
9164 | jones | 2345 |
6332 | black | 2348 |
6332 | black | 2348 |
5003 | barry | 3422 |
5003 | barry | 3422 |
6904 | joy | 5623 |
6904 | joy | 5623 |
5851 | fred | 5963 |
6332 | fred | 5963 |
9164 | bill | 5964 |
6332 | bill | 5964 |
9164 | bill | 5964 |
5003 | bill | 5964 |
5003 | bill | 5964 |
9164 | joe | 2596 |
6332 | joe | 2596 |
5851 | joe | 2596 |
Detlef_Lewin Hi.
With Excel 365 robywoo's formula can be extended to spill the resulting table from one cell, L2.
The attached file has it built in three steps.
The LET functions makes it possible to use helper columns in the same formula.
Changing the last parameter from the final output to eg IDs is a way to debug or analyse such formula.
=LET(IDs;UNIQUE(C:C); counter;BYROW(IDs;LAMBDA(id;COUNT(UNIQUE(FILTER(A:A;C:C=id))))); includingLabels;CHOOSE({1\2};counter;IDs); output;INDEX(includingLabels;SEQUENCE(ROWS(includingLabels)-2;;2);SEQUENCE(;COLUMNS(includingLabels))); output )
You could also add more functionality like changing row 5 to
SORT(output) or SORT(output,2) to sort by first or second column.
NB - my Excel uses national settings ; as delimiter between parameters instead of US ,
Easiest to use the attached file.
- Detlef_LewinSilver Contributor
- robywooCopper ContributorThank you. I do like this as it looks simple. Plus using and applying the Unique formula to column C in a separate table with be good for my bigger data set
- robywooCopper ContributorI just did it with my bigger data set and the values seemed to line up. Do you know what perhaps it didn't line up in the screenshot that I sent? Did it count the header as a cell?
- bosinanderSteel Contributor
Detlef_Lewin Hi.
With Excel 365 robywoo's formula can be extended to spill the resulting table from one cell, L2.
The attached file has it built in three steps.
The LET functions makes it possible to use helper columns in the same formula.
Changing the last parameter from the final output to eg IDs is a way to debug or analyse such formula.
=LET(IDs;UNIQUE(C:C); counter;BYROW(IDs;LAMBDA(id;COUNT(UNIQUE(FILTER(A:A;C:C=id))))); includingLabels;CHOOSE({1\2};counter;IDs); output;INDEX(includingLabels;SEQUENCE(ROWS(includingLabels)-2;;2);SEQUENCE(;COLUMNS(includingLabels))); output )
You could also add more functionality like changing row 5 to
SORT(output) or SORT(output,2) to sort by first or second column.
NB - my Excel uses national settings ; as delimiter between parameters instead of US ,
Easiest to use the attached file.
- Detlef_LewinSilver Contributor
I got the impression from the desired output that robywoo wanted only the numbers for a few selected IDs.