• ベストアンサー

Excel 文字列 一致

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

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答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/17068)
回答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

  • EXCEL 文字列比較

    EXCELを使ってA1とA2文字列を比較してA3にA1とA2で同じ文字はそのまま出力して間違っている文字の部分だけXに置き換えて出力することは可能ですか? 例) A1 ABCDEFG 比較セル A2 ABDCEFG 比較セル A3 ABXXEFG 比較したものを出力するセル

  • エクセルの文字列の検索に関して

    以下の画像を参照して欲しいのですが、 簡潔に言うと、 Cの文字が先頭に入っている文字列をA2からA1946までの間で探し出してその文字列の2文字目と3文字目をDのセルに格納したいです。 画像ではDせるにはきちんと入っていますが、これは手作業でしたのでこの作業を関数でできないかなと思いまして。 なにせ漢字は1945文字ありますので… お願いします。 ちなみに例えばC1の文字をA1からA1946と比べて、A67の先頭と一致した場合、A67の2文字目と3文字目をD1に出力といった具合です。

  • エクセル 文字列から右3文字を除いて文字列を取り出したい

    エクセル2003です 例えば 「東京のお母さん(A)」と入力されたセルから「(A)」を除いて「東京のお母さん」を取り出したい。 なお、「(A)」は、3文字に確定しているが、「東京のお母さん」の文字数は、7文字より多い場合又は少ない場合があります。 左側の文字数が確定していれば、=LEFT(A1,7)で取り出せますが文字数が不動の場合の取り出し方を教えてください。

  • エクセルで文字列の個数を数える

    ある範囲のエクセルデータから決まった文字列の個数をカウントする関数の使い方が判れば教えてください。 例えば、A1からH200までのデータより、”リンゴ”という文字列が何個あるかカウントしたいのですが。 COUNTIF(A1:H200,"*リンゴ*")とすると”リンゴ”という文字列が含まれるセルの個数は出たのですが、”リンゴ”という文字列が複数含まれるセルもあるので、”リンゴ”という文字列の個数とは 一致しないようなのです。 どなたか、よろしくお願いします。

  • エクセルで一致する数をカウントしたい

    エクセル2010、OSはWindoes7です。 エクセルでセルに入っている単語、文章で一致するものの数をカウントしたいです。 例1 A列に以下のような単語が入ってるとします A1 りんご A2 みかん A3 バナナ さて、A列の「リンゴ」という単語の数を数えたい場合、普通は以下のようにします。 =countif(A1:A3,"りんご") (引数2は、どこかのセルに入れた凡例を参照するもよし) こうすれば結果は1となります。 他の単語の場合も同様です。引数2を代えれば、どんな単語でも自在にできます。 では以下のような場合はどうすればいいでしょうか? 例2 A列に以下のような単語が入ってるとします A1 りんご A2 みかん A3 バナナ A4 りんご   みかん A5 いちご   りんご A6 さっちゃんはね、バナナが大好き 本当だよ (注 A4,A5はAlt+Enter入力で、セル内改行してある) この状態で、A列にある、「りんご」の数をカウントせよ、という関数命令を実行させると 解答が りんご= 3 となるような関数を知りたい。 同様に「みかん」 =3  「バナナ」=2 と返してくるような関数を知りたい。 ちなみに、例2に対してcountif関数を実行させると、結果は りんご 1 みかん 1 バナナ 1 となる。 なぜならcountif関数では、カウントする定義は「一文字目から最終文字まで、完全一致」となっているので・・・。 よろしくお願いします。

  • エクセル:数字の部分一致と完全一致

    B1のセルにA1のセルの文字が含まれるか判定をするため、以下の関数を使用しました。 =IF(COUNTIF(B1,"*"&A1&"*"),0,1) 例えば、A1=400のとき、 B1=q400 B1=400 1 などの場合は、0(=含まれる)という判定がでるのですが B1=400 B1=14000 などの時は、1(=含まれない)となります。 完全一致である400、および14000も「400」という文字列が含まれるので同じ結果を返したいのですができません。 原因はA1が文字ではなく数字だからということはわかるのですが。 ちなみにA1には文字も入力される場合があるので、どの場合でも含むかの判定を出したいです。 アドバイスお願いします。

  • Excelで文字列を独自の二進数で表したい。

    A,B,C,D,Eのいずれかを含む文字が順不同でセルに入っているものから、 A=10000 B=1000 C=100 D=10 E=1 と置換して足した、二進数であらわしたり、逆にその二進数から文字列に戻したりしたいです。 (例:DAなら10010、EBCなら1101) VBAの自作関数を含めてExcelの関数でできる方法があればお教えくださると助かります。

  • EXCEL、文字の数をカウントしたい。

    エクセル関数を使って、文字(100文字以上)の数をカウントしたいのですが、可能でしょうか。 例えば:セルに一つずつ、ABCAAACDを入力した場合に、A=4、B=1、C=2、D=1 のように表示したいんです。 ※Aを数える場合に、IF関数を使ってAのとき1となるように IF(A1="A",1)+IF(A2="A",1)+・・・+・・・のように順次足していけば短い文字であれば可能ですが、文字数が多くなってくると、セル内に関数がはいりきらずに計算できなくなります。別の関数をつかってより簡単に計算できないでしょうか?

  • Excelで文字列の中から部分一致したものを抽出

    エクセルで特定の文字を含むセルを抽出する方法を探しています。 A列に元データ、C列に検索条件があります。 C列の条件に一部でも一致するデータを抽出したいです。(結果イメージを添付します) 可能であれば、関数で対応したいです。 どなたかお分かりになる方いらっしゃいましたら、 教えていただけないでしょうか? よろしくお願いいたします。

  • エクセルで特定の範囲の文字列を抜き出したいのですが関数がわかりません。

    エクセルで特定の範囲の文字列を抜き出したいのですが関数がわかりません。 抽出の条件は「セルの中の【 】でくくられた部分」(【】も含む)です。 各セル内の文字列はすべてこの【】から始まる文章で構成されているのですが、 【】内の文字数はそれぞれ違うという状態です。 文字数が固定の場合の関数は思いつくのですが、異なる場合がよくわかりません。 よろしくお願いします。

専門家に質問してみよう