2017-01-03 126 views
1

我正在寻找一个Excel函数,它比较两个单元格并返回这两个单元格之间匹配字符的数量。在excel中比较两个单元格并返回匹配的字符数

我希望函数忽略的情况下,即A = A,B = B等

实施例:

A1 = abcdefB1 = Afcblm .. C1 = 4(匹配字符数= 4(afcb

函数应该比较两个单元格中的所有字符,然后返回每个字符h在两个单元中都存在,而不管顺序如何。

我已创建下面

=SUM(IFERROR(IF(MID(A1, ROW(INDIRECT("$1:$" & LEN(A1))), 1)=MID(B1, ROW(INDIRECT("$1:$" & LEN(B12))), 1), 1, 0), 0)) 

函数时我应用此实施例C1 = 1上述和相信这个问题是由于该功能顺序地比较字符它不工作。

+0

A1可以包含同一个字母的多个实例吗?例如A1 = abacdef? – Ben

+0

那里;在上面的公式中有一个错误 - Len(B12)代替LEN(B1)。但它仍然只能比较处于相同位置的字母,例如axbx和艾比会给2但abcd和dcba会给0 –

回答

2

这将工作,如果使用按Ctrl + + 输入进入,而不是仅仅输入

=SUM(IF(ISERROR(FIND(MID(A1,ROW(INDIRECT("$A$1:$A$"&LEN(A1))),1),B1)),0,1)) 

你就会知道,如果它被正确输入,因为花括号将被要么放在公式边上的公式如下:{=...}

它通过打破单元格中的文本A1成单个字母

a 
b 
c 
d 
e 
f 

它随后执行FIND,以检查是否字母可在细胞B1,返回1或0

1 
1 
1 
0 
0 
1 

找到最后求和阵列完成处理并返回4根据需要


更新 根据Tom Sharpe的建议作 - 为不区分大小写使用 SEARCH代替 FIND

=SUM(IF(ISERROR(SEARCH(MID(A1,ROW(INDIRECT("$A$1:$A$"&LEN(A1))),1),B1)),0,1)) 
+0

好的答案。 OP可能希望将FIND更改为SEARCH以忽略大小写。 –

+0

谢谢 - 我更新了包含此建议的答案 – CallumDA

0

只是为了完整性,这将是这样做的另一种方式。它强制将A1中的每个字母与B1中的所有字母进行比较。

=SUM(IFERROR(IF(MID(A1, ROW(INDIRECT("$1:$" & LEN(A1))), 1)=TRANSPOSE(MID(B1, ROW(INDIRECT("$1:$" & LEN(B1))), 1)), 1, 0), 0)) 

如果你想找到多少个不同的字母分别在两个小区中,你可以使用这个

=SUM(ISNUMBER(SEARCH(MID("abcdefghijklmnopqrstuvwxyz",ROW($1:$26),1),A1))*ISNUMBER(SEARCH(MID("abcdefghijklmnopqrstuvwxyz",ROW($1:$26),1),B1))) 

他们两个都是数组公式,并必须与按Ctrl进入输入

相关问题