如何解决Excel COUNTIF 匹配目标的变体:LET 解决方案?
这是一个比简单的 =COUNTIF(rng,"*"&value&"*")
(如 here)稍微复杂的问题。
我有一个二维数组,其中包含包含以下数据的单元格:
- abc
- 定义
- abc def
- 呸
- abc,def,ghi
- abcdef
- 呸;定义
..... 以及其他几个变体。 我正在尝试计算“abc”的精确匹配,但我希望计数包含包含“abc def”和其他类似变体的单元格,但是我可以'只使用上述简单的 COUNTIF 公式,因为“abcdef”不是可接受的匹配。目标字符串必须是独立的,或者由 chars
中可接受的字符与其他文本分隔。
我想我已经完成了 90% 的工作,但我需要帮助的一点是将目标“名称”的所有可能可接受的变体组合到一个平坦的范围内,然后我可以检查我的数据源是否伯爵。我已经尝试了 INDEX(r_1:r_8,idxRow,idxCol)
和其他熟悉的解决方案,这些解决方案在引用其他范围时适用于工作表,但我不熟悉使用 =LET
函数。所有这些在我的电子表格上分解成单独的组件时都运行良好,但我正在寻找一个带有 =LET
的更简洁的解决方案。请参阅下面的当前公式:
=LET(rg,DataTable[[Q14_1]:[Q14_9]],name,AU38,chars,{" ",",";"},r,8,r_1,CONCATENATE(name,chars),r_2,CONCATENATE(chars,name),r_3,r_4,"*"),r_5,CONCATENATE("*",r_6,r_7,r_8,c,COUNTA(chars),mSeq,SEQUENCE(r*c),1+MOD(mSeq,r),idxCol,INT((SEQUENCE(r*c)-1)/r)+1,X,INDEX(**NeedHelpHere**,idxCol),SUM(COUNTIF(rg,COUNTIF(rg,X))
)
解决方法
试试下面的公式。如果您有更多分隔符,如空格、逗号等,则需要使用更多 SUBSTITUTE()
函数。
=LET(x,FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1:A7," ","</s><s>"),","</s><s>")&"</s></t>","//s"),y,FILTER(x,x="abc"),SUM(--(y<>"")))
要了解 FILTERXML()
,请阅读来自 JvdV 的 article。
我再次考虑了这个问题,并发布了一个适合我需求的解决方案。
我不需要将一列潜在匹配项索引到 COUNTIF
,我可以多次COUNTIF
。此外,我没有考虑 chars
的不同组合,我只是在 chars
的两侧搜索相同的 target
(例如“,abc”,当我应该也一直在寻找“,abc;”)。在一侧转置 chars
数组是解决此问题的一种简单方法。事实证明,"*"&target&"*"
会搜索“*target*”和“target”(废话!),因此我进一步简化,消除了重复的可能性。
我的最终公式如下,它计算给定 target
中出现 chars
(单独或被任何可接受的 rng
包围)的次数:
=LET(rng,DataTable[Q14_1]:[Q14_9]]),name,$A6,chars,{" ",";"},r_1,CONCATENATE(name,"*"),r_2,CONCATENATE("*",name),r_3,TRANSPOSE(chars),SUM(COUNTIF(rng,COUNTIF(rng,r_1),r_2),r_3))
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。