Forum Discussion
Missing numbers in a column of repeating numbers
- Mar 28, 2023
Katescott Now it is more clear, you can use the following formula:
=LET(A, A1:A9, B,B1:B9, check,SEQUENCE(3), ux,UNIQUE(A), missing,MAP(ux, LAMBDA(x, TEXTJOIN(",",,FILTER(check, ISNA(XMATCH(check,FILTER(B,A=x))),"")))), FILTER(HSTACK(ux,missing),missing<>""))
In this sample, we assume the missing values we want to check are in the range of 1-3. Here is the sample output. It returns the rows from the first column with missing values. If more than one is missing, it returns a list separated by a comma. Here is the output, you can adjust to your need in your real situation, adjusting the names: A, B, and check. The last FILTER call is to just show the column row values with missing values only.
Here is the output:
You can also use COUNTIFS as follows:
=LET(A,A1:A9, B,B1:B9, ux,UNIQUE(A), seq,SEQUENCE(,3), cnts,COUNTIFS(A,ux,B,seq), missing,BYROW(cnts,LAMBDA(x, TEXTJOIN(",",,FILTER(seq,x=0,"")))), FILTER(HSTACK(ux,missing),missing<>""))
In both cases you can use MAP or BYROW I just changed it for illustrative purposes. For this case, seq has to be a column-wise array.
If you want the result the other way around, i.e. for each number the missing letters, adapting for example the COUNTIFS approach and considering a numeric range or 1-5:
=LET(A,A1:A9, B,B1:B9, ux,UNIQUE(A), seq,SEQUENCE(,5), cnts,COUNTIFS(A,ux,B,seq), missing, TOCOL(BYCOL(cnts,LAMBDA(x, TEXTJOIN(",",,FILTER(ux,x=0,""))))), FILTER(HSTACK(TOCOL(seq),missing),missing<>""))
Now we use BYCOL and transpose the information using TOCOL.
I hope it helps,
- KatescottMar 28, 2023Copper Contributor
I am going to try to explain it the best I can.
Column A is unique names:
XYZ = Ford
ABC = Honda
NOP = Jeep
Column B is "color":
10 = Yellow
20 = Pink
51 = Gray
102 = Black
103 = Orange
290 = Green
The numbers originally assigned to the colors are random and have no sequence. So, I have assigned a numbers in sequence (1-50 Column C) to always identify colors ie Yellow = 10 = 1; Pink = 20 = 2; Gray = 51 = 3 etc.
I am trying to find out when Ford (XYZ), Honda (ABC) Jeep (NOP) are missing any number in the 1-50 sequence. Then I can determine from the missing assigned numbers what colors are missing from each name in column A
Does that make sense?- davidlealMar 28, 2023Iron Contributor
Katescott Now it is more clear, you can use the following formula:
=LET(A, A1:A9, B,B1:B9, check,SEQUENCE(3), ux,UNIQUE(A), missing,MAP(ux, LAMBDA(x, TEXTJOIN(",",,FILTER(check, ISNA(XMATCH(check,FILTER(B,A=x))),"")))), FILTER(HSTACK(ux,missing),missing<>""))
In this sample, we assume the missing values we want to check are in the range of 1-3. Here is the sample output. It returns the rows from the first column with missing values. If more than one is missing, it returns a list separated by a comma. Here is the output, you can adjust to your need in your real situation, adjusting the names: A, B, and check. The last FILTER call is to just show the column row values with missing values only.
Here is the output:
You can also use COUNTIFS as follows:
=LET(A,A1:A9, B,B1:B9, ux,UNIQUE(A), seq,SEQUENCE(,3), cnts,COUNTIFS(A,ux,B,seq), missing,BYROW(cnts,LAMBDA(x, TEXTJOIN(",",,FILTER(seq,x=0,"")))), FILTER(HSTACK(ux,missing),missing<>""))
In both cases you can use MAP or BYROW I just changed it for illustrative purposes. For this case, seq has to be a column-wise array.
If you want the result the other way around, i.e. for each number the missing letters, adapting for example the COUNTIFS approach and considering a numeric range or 1-5:
=LET(A,A1:A9, B,B1:B9, ux,UNIQUE(A), seq,SEQUENCE(,5), cnts,COUNTIFS(A,ux,B,seq), missing, TOCOL(BYCOL(cnts,LAMBDA(x, TEXTJOIN(",",,FILTER(ux,x=0,""))))), FILTER(HSTACK(TOCOL(seq),missing),missing<>""))
Now we use BYCOL and transpose the information using TOCOL.
I hope it helps,
- KatescottApr 04, 2023Copper ContributorThank you so much! You have save me so much manual verification! I really need to learn more formulas in Excel