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

时间:2017-01-03 10:52:28

标签: excel excel-formula match cell letters-and-numbers

我正在寻找一个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 时,它不起作用,我相信这个问题是由于此函数按顺序比较字符。

2 个答案:

答案 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

<小时/> 的更新 根据Tom Sharpe的建议 - 对于不区分大小写使用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