- ベストアンサー
Excel 文字列 一致
2つの文字を比較して一致した文字の数を数える関数があれば教えてください。 例えばExcelでA1セルに「海山商事」A2セルに「海猫商事」を入れて比較し、一致している文字数(この場合は「3」)をA3に出力したいのですがどうしたらよいですか?大変恐縮ですがアドバイスください。よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
=SUMPRODUCT(ISNUMBER(FIND(MID(B1,ROW(INDIRECT("1:"&LEN(B1))),1),A1))*1) ※注意 「海山商事」と「山海商事」だと4が結果になります。
その他の回答 (4)
- maron--5
- ベストアンサー率36% (321/877)
◆こんな方法もありますよ =COUNT(INDEX(FIND(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1),A1),))
お礼
ご回答いただきまして大変ありがとうございました。折角ご回答いただいたにも関わらずポイントをつけられずに大変申し訳ございませんでした。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 これは、むつかしいですね。 =SUMPRODUCT(NOT(ISERROR(FIND(MID(A1,ROW(INDIRECT("A1:A"&LEN(A1))),1),A1&A2,LEN(A1)+1)))*1) 特別な例を考えてみました。 海山商事 山海山商事 なら、これは、4になります。 海山商事 山山商事 なら、これは、3になります。
お礼
ご回答いただきまして大変ありがとうございました。また、折角ご回答いただいたのにポイントをつけられずに大変申し訳ございませんでした。
- imogasi
- ベストアンサー率27% (4737/17069)
こういう問題はウラ技的関数が出る問題ですが ユーザー関数を使うと)作ると) 「短いほうの文字列の文字が長いほうに何個一致するか」 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列 asd asfgd adfs wafgdgtsd sert dfsyurr 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
お礼
ご回答いただきまして大変ありがとうございました。また、プログラムまで組んでいただいて大変感謝いたします。
- pbforce
- ベストアンサー率22% (379/1719)
VBAで関数を作れば出来るでしょう。
お礼
早々にご回答いただきまして大変ありがとうございました。助かりました。