2

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

我希望函数忽略大小写,即 A = a、B = b 等。

例子:

A1 =abcdefB1 = 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时它不起作用,我相信这个问题是由于这个函数按顺序比较字符造成的。

4

2 回答 2

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

然后它执行 aFIND检查是否可以在单元格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))
于 2017-01-03T11:34:12.093 回答
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)))

它们都是数组公式,必须输入 CtrlShiftEnter

于 2017-01-03T14:02:41.610 回答