比较Excel中的两个单元格,并返回匹配的字符数
我正在寻找一个Excel函数,它比较两个单元格,并返回这两个单元格之间匹配字符的数量。
我想让函数忽略大小写,即A = a,B = b等
例:
A1 = abcdef
, B1 = Afcblm
.. C1 = 4
(匹配字符数= 4( afcb
)
函数应该比较两个单元格中的所有字符,然后返回两个单元格中存在的每个字符,而不pipe顺序如何。
我已经创build了下面的function
=SUM(IFERROR(IF(MID(A1, ROW(INDIRECT("$1:$" & LEN(A1))), 1)=MID(B1, ROW(INDIRECT("$1:$" & LEN(B12))), 1), 1, 0), 0))
当我把这个应用到上面的例子C1 = 1时,它不工作,我相信这个问题是由于这个函数比较字符顺序。
这将工作,如果input使用Ctrl + Shift + Enter ,而不仅仅是input
=SUM(IF(ISERROR(FIND(MID(A1,ROW(INDIRECT("$A$1:$A$"&LEN(A1))),1),B1)),0,1))
您会知道是否input正确,因为大括号将放置在公式栏的公式栏中,如下所示: {=...}
它通过将单元格A1中的文本分解为单个字母来工作
a b c d e f
然后执行FIND
检查是否可以在单元格B1中find这些字母,返回1或0
1 1 1 0 0 1
最后总结数组完成过程,并根据需要返回4
根据Tom Sharpe的build议更新 – 不区分大小写使用SEARCH
而不是FIND
:
=SUM(IF(ISERROR(SEARCH(MID(A1,ROW(INDIRECT("$A$1:$A$"&LEN(A1))),1),B1)),0,1))
为了完整起见,这将是另一种方式。 它强制将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))
如果你想find两个单元格中有多less个不同的字母,你可以使用它
=SUM(ISNUMBER(SEARCH(MID("abcdefghijklmnopqrstuvwxyz",ROW($1:$26),1),A1))*ISNUMBER(SEARCH(MID("abcdefghijklmnopqrstuvwxyz",ROW($1:$26),1),B1)))
它们都是数组公式,并且必须使用Ctrl Shift Enter进行input