比较Excel中的两个单元格,并返回匹配的字符数

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

我想让函数忽略大小写,即A = a,B = b等

例:

A1 = abcdefB1 = 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