xyz***
对于以下内容,我有两列:每列都有一些以逗号分隔的格式的代码,其中***
是数字。
我需要独特计算和两列中数字以 开头的任何代码3
(例如xyz321
、等)的出现次数,同时将相同代码的多次出现仅计为一次。xyz385
A
B
计数、、、,并去除和 的重复项后,列中要求的结果C
应为 5 。xyz333
xyz321
xyz371
xyz361
xyz385
xyz321
xyz333
A | 乙 | C | |
---|---|---|---|
1 | xyz321,xyz111,xyz222,xyz333,xyz371 | xyz333,xyz111,xyz333,xyz321,xyz361,xyz222,xyz385 | 5 |
请注意,要查找的代码总是以 xyz 开头,因为存在其他带有不同字母的代码,即使它们的数字以 3 开头,也应该被忽略,正如我之前所说的那样。
数字(前三个字母后面)始终是三位数,位于前三个字母后面(在我们的例子中是 xyz)
正如我之前所说,整个单一代码并不总是由六个字符组成,因为字母 s 可以在一些代码的末尾找到。因此,如果代码由七个字母组成,请始终考虑前六个字符并删除第七个/最后一个字符。
PS 我在 Windows 10 上使用 Office365
答案1
编辑
鉴于您澄清相关字符串将始终采用 格式xyz3##
,并且您确实拥有 Windows Office 365,我们只需进行更改fn
以反映这一点:
編輯2
公式已更改,以考虑无匹配的情况。在这种情况下,函数FILTER
将返回一个错误,该错误COUNTA
将计入
=LET(ss,FILTERXML(SUBSTITUTE(SUBSTITUTE("<t><s>" & SUBSTITUTE(A1&","&B1,",","</s><s>")&"</s></t>"," ",""),CHAR(160),""),"//s[not(preceding::*=.)]"),
fn,LEFT(ss,4)="xyz3",filter,FILTER(ss,fn),cnt,
COUNTA(filter),IF(OR(ISERROR(filter)),0,cnt))