我正在寻找一个Excel函数,它比较两个单元格并返回这两个单元格之间的匹配字符数。
我希望函数忽略大小写,即A = a,B = b等
示例:
A1 = abcdef
和 B1 = Afcblm
.. C1 = 4
(数字匹配字符= 4(afcb
)
该函数应比较两个单元格中的所有字符,然后返回两个单元格中存在的每个字符,而不管顺序如何。
我创建了下面的功能
=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 :(得分:2)
如果使用 Ctrl + Shift + Enter 输入,而不仅仅是 Enter
=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
SEARCH
而不是FIND
:
=SUM(IF(ISERROR(SEARCH(MID(A1,ROW(INDIRECT("$A$1:$A$"&LEN(A1))),1),B1)),0,1))
答案 1 :(得分: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 Shift Enter