• ベストアンサー

Excel 文字列 一致

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

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

=SUMPRODUCT(ISNUMBER(FIND(MID(B1,ROW(INDIRECT("1:"&LEN(B1))),1),A1))*1) ※注意 「海山商事」と「山海商事」だと4が結果になります。

bird66
質問者

お礼

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

その他の回答 (4)

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.5

◆こんな方法もありますよ =COUNT(INDEX(FIND(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1),A1),))

bird66
質問者

お礼

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

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 これは、むつかしいですね。 =SUMPRODUCT(NOT(ISERROR(FIND(MID(A1,ROW(INDIRECT("A1:A"&LEN(A1))),1),A1&A2,LEN(A1)+1)))*1) 特別な例を考えてみました。 海山商事 山海山商事 なら、これは、4になります。 海山商事 山山商事 なら、これは、3になります。

bird66
質問者

お礼

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

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

こういう問題はウラ技的関数が出る問題ですが ユーザー関数を使うと)作ると) 「短いほうの文字列の文字が長いほうに何個一致するか」 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

bird66
質問者

お礼

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

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

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

関連するQ&A

専門家に質問してみよう