2

2 つのセルを比較し、それら 2 つのセル間で一致する文字の数を返す Excel 関数を探しています。

関数で大文字と小文字を区別しないようにします。つまり、A = a、B = b などです。

例:

A1 = abcdefand B1 = Afcblm.. C1 = 4(一致する文字の数 = 4 ( afcb)

この関数は、2 つのセル内のすべての文字を比較し、順序に関係なく、両方のセルに存在するすべての文字を返す必要があります。

以下の関数を作成しました

=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+を使用して入力した場合に機能します。EnterEnter

=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にあるかどうかを確認する a を実行し、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 に答える