用于比较更改列表中的值的公式 [英] Formula to Compare Values from Changing List
本文介绍了用于比较更改列表中的值的公式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
嗨,我有一个项目列表,如下所示-在示例1列中,蓝色(我猜是父级)后跟红色(子级),帐户1中的帐号都应该与该部分中前面的蓝色相同(直到下一个蓝色与另一个帐号一起列出)。
在下面的示例中,需要标记/标识第3条和第7条记录。有什么简单的方法可以用公式做到这一点吗?我有大约100K个包含此信息的行项目。非常感谢!!Sample 1 Acct
Blue 1234
Red 1234
Red 2458
Red 1234
Blue 5768
Red 5768
Red 2589
Red 5768
推荐答案
这是我的建议。它在列A中的当前单元格之前和之后查找第一个在两个方向都不匹配的单元格,然后取这些单元格之间的范围。如果B列中与当前帐户不匹配的单元格数量至少与当前范围内与当前帐户匹配的单元格数量一样多,则假定当前单元格有误(如果有两个子级,并且它们的帐户不匹配,则它们都将被标记)。
=LET(range,INDEX(A:A,XMATCH(TRUE,A$1:A2<>A2,0,-1)+ROW(A$1)):INDEX(B:B,XMATCH(TRUE,A2:A$10<>A2,0)+ROW()-2),
sample,INDEX(range,0,1),
acct,INDEX(range,0,2),
equal,COUNTIF(acct,B2),
unequal,COUNTIF(acct,"<>"&B2),
unequal>=equal)
遗憾的是,此公式在条件格式中不起作用,因此它将意味着将其放在单独的列中,向下拖动并筛选真值。
我将了解如何修改公式以在CF中工作。
这在CF中有效,但速度较慢-需要删除整列范围。
=LET(start,XMATCH(TRUE,A$1:A2<>A2,0,-1)+ROW(A$1),end,XMATCH(TRUE,A2:A$10<>A2,0)+ROW()-2,
sample,FILTER(A:A,(ROW(A:A)>=start)*(ROW(A:A)<=end)),
acct,FILTER(B:B,(ROW(B:B)>=start)*(ROW(B:B)<=end)),
equal,SUM(--(acct=B2)),
unequal,SUM(--(acct<>B2)),
unequal>=equal)
我认为这是可以的
=LET(start,XMATCH(TRUE,A$1:A2<>A2,0,-1)+1,end,XMATCH(TRUE,A2:A$10<>A2,0)+ROW()-ROW(A$1)-1,
seq,SEQUENCE(ROWS(A$1:A$10)),
sample,FILTER(A$1:A$10,(seq>=start)*(seq<=end)),
acct,FILTER(B$1:B$10,(seq>=start)*(seq<=end)),
equal,SUM(--(acct=B2)),
unequal,SUM(--(acct<>B2)),
unequal>=equal)
如果我误解了整件事,并且整个示例1的父项和子项都被直接标记为蓝色或红色,那么您只需要在条件格式中这样做:
=AND(A2="Red",B2<>XLOOKUP("Blue",A$1:A2,B$1:B2,,0,-1))
用递增计数标记每个挡路
=IF(A2="Blue",C1+1,C1)
这篇关于用于比较更改列表中的值的公式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文