MS Excel:如何计算同一行中两个单元格中子字符串的唯一出现次数?

MS Excel:如何计算同一行中两个单元格中子字符串的唯一出现次数?

xyz***对于以下内容,我有两列:每列都有一些以逗号分隔的格式的代码,其中***是数字。

我需要独特计算和两列中数字以 开头的任何代码3(例如xyz321、等)的出现次数,同时将相同代码的多次出现仅计为一次。xyz385AB

计数、、、,并去除和 的重复项后,列中要求的结果C应为 5 。xyz333xyz321xyz371xyz361xyz385xyz321xyz333

A C
1 xyz321,xyz111,xyz222,xyz333xyz371 xyz333,xyz111,xyz333xyz321xyz361,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))

相关内容