プロが教えるわが家の防犯対策術!

2つの文字を比較して一致した文字の数を数える関数があれば教えてください。

例えばExcelでA1セルに「海山商事」A2セルに「海猫商事」を入れて比較し、一致している文字数(この場合は「3」)をA3に出力したいのですがどうしたらよいですか?大変恐縮ですがアドバイスください。よろしくお願いします。

A 回答 (5件)

=SUMPRODUCT(ISNUMBER(FIND(MID(B1,ROW(INDIRECT("1:"&LEN(B1))),1),A1))*1)



※注意
「海山商事」と「山海商事」だと4が結果になります。
    • good
    • 6
この回答へのお礼

早々にご回答いただきまして大変ありがとうございました。助かりました。

お礼日時:2007/11/20 12:51

◆こんな方法もありますよ


=COUNT(INDEX(FIND(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1),A1),))
    • good
    • 3
この回答へのお礼

ご回答いただきまして大変ありがとうございました。折角ご回答いただいたにも関わらずポイントをつけられずに大変申し訳ございませんでした。

お礼日時:2007/11/20 12:56

こんにちは。



これは、むつかしいですね。

=SUMPRODUCT(NOT(ISERROR(FIND(MID(A1,ROW(INDIRECT("A1:A"&LEN(A1))),1),A1&A2,LEN(A1)+1)))*1)

特別な例を考えてみました。

海山商事
山海山商事

なら、これは、4になります。

海山商事
山山商事

なら、これは、3になります。
    • good
    • 2
この回答へのお礼

ご回答いただきまして大変ありがとうございました。また、折角ご回答いただいたのにポイントをつけられずに大変申し訳ございませんでした。

お礼日時:2007/11/20 12:55

こういう問題はウラ技的関数が出る問題ですが


ユーザー関数を使うと)作ると)
「短いほうの文字列の文字が長いほうに何個一致するか」
Function comc(a, b)
bl = Len(b)
For i = 1 To Len(a)
b = Replace(b, Mid(a, i, 1), "")
Next i
MsgBox b
comc = bl - Len(b)
End Function

例データ
A列   B列
asdasfgd
adfswafgdgtsd
sertdfsyurr
C1に=cmpc(A1,B1)
ト入れて下方向に式を複写。
結果
3
5
3
B1におなじ文字が2個あれば2と勘定してます。
文字数がA1<B1と仮定してますが、長い方と短い方をSwapするコードを入れれば、この仮定は不要になります。
ーーー
Function comc2(a, b)
X = a: Y = b
If Len(X) > Len(Y) Then
w = X
s = Y
t = X
End If
MsgBox s & "=" & t
bl = Len(t)
For i = 1 To Len(s)
t = Replace(t, Mid(s, i, 1), "")
Next i
MsgBox t
comc2 = bl - Len(t)
End Function
    • good
    • 1
この回答へのお礼

ご回答いただきまして大変ありがとうございました。また、プログラムまで組んでいただいて大変感謝いたします。

お礼日時:2007/11/20 12:53

VBAで関数を作れば出来るでしょう。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!