• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelで、A列にある文字がB列にあるかないか。)

ExcelでA列とB列の一致を調べる方法|簡単な手順と関数の使い方

このQ&Aのポイント
  • ExcelでA列に入っている文字がB列にあるかないかを調べる方法を教えてください。使える関数や手順を教えてください。
  • 例えば、A列に「算」「国」「理」があり、B列に「漢」「画」「文」がある場合、B列の「画」や「国」がA列に存在するかを知りたいです。
  • また、B列の中で文字が重複して出現する場合に、その文字の出現回数も知りたいです。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.5です! 余計なお世話を焼いてしまったみたいですね! B列を判断したいわけですよね? 単純にあるか?ないか?というだけであれば ↓の画像のような方法もあります。 数式で処理する場合は C1セルに =IF(COUNTIF(A:A,B1),"○","×") という数式を入れオートフィルで下へコピー! これでA列にあれば「○」、なければ「×」が表示されます。 他の方法としては条件付書式を使ってあればセルに色を付ける方法はどうでしょうか? 当方使用のExcel2003の場合ですが B列すべてを範囲指定(列番号の「B」のところでクリック) → メニュー → 書式 → 条件付書式 → 「数式が」を選択 → 数式欄に =COUNTIF(A:A,B1) として → 書式 → 塗りつぶしのパターンで「赤」を選択しています。 これでB列にあるものは赤になると思います。 参考になれば良いのですが これも的外れならごめんなさいね。m(__)m

nekomyumyu
質問者

お礼

そうです! 「=IF(COUNTIF(A:A,B1),"○","×")」こそ私の求めていたものです! なぜ皆さんそんな難しく考えてしまわれるのでしょうか… なにか呼び水になるようなことを書いたでしょうか。 ともかくこれ以上私がわからないがために ムダになってしまうご回答をいただかないように、BAを入れたいと思います。 ありがとうございました。

その他の回答 (7)

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

単一のエクセル通常(配列数式以外と言うこと)関数では出来ないとおもう。 その配列数式だが =SUM(IF(NOT(ISERROR(MATCH(A1:A8,$B$1:$B$8,0))),1,0)) と入れてSHIFT+CTRL+ENTERキーの3つを同時押しする。 例データ A列  B列 a s b t c l d d e b s x r e f g で 結果 4(b,d,e,sの4セル) A列に、もし同じ文字が2箇所あると上記一致回数回数が増えてしまうが。 ーー この結果が1以上だと同じ文字が両列で存在するということになる。 ーー 関数では関数を繰り返す仕組みは配列数式しかないので上記を考えた。 ただ難しくて直ちに断言できないが、SUMPRODUCT関数を使うと、配列数式でなくても同じことをやれる可能性はあると思う。(日頃配列数式とSUMPRODUCTの双対(そうつい)性を感じるので) VBAで考えても、A列の行ごとのくり返しをするロジックは避けられないと思う。 VBAを使って見かけ上はユーザー関数をつくり、1関数化は出来るが。

nekomyumyu
質問者

お礼

>単一のエクセル通常(配列数式以外と言うこと)関数では出来ないとおもう。 よくわかりませんが =IF(COUNTIF(A:A,B1),"○","×") が私の求めていた内容を示してくれました。 たくさんご説明していただきましたが正直全く分かりませんでしたし 「下記より簡単なものを…」と何度もお願いしているのに、 そんな難しいことを書き込まれても… お礼を言うべきなのか少し悩んでしまいますが お時間をとっていただいたことに感謝します、ありがとうございました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.7

あるかないかだけの判定ならたとえば以下のような配列数式で判定できます。 A列のデータ範囲とB列のデータ範囲を大きめに設定して、それぞれ「A列のデータ」「B列のデータ」と名前を付けてください(もちろん絶対参照の数式でもOKです) =IF(COUNT(1/COUNTIF(A列のデータ,B列のデータ)),"重複あり","なし") 配列数式ですので、入力後Ctrl+Shift+Enterで確定してください。 どのようなデータが重複しているか表示するなら、以下のような数式になります(Excel2007以降の場合)。 =IFERROR(INDEX(A列のデータ,SMALL(IF(ISNUMBER(MATCH(A列のデータ,B列のデータ,0)),ROW(A列のデータ),""),ROW(A1))),"") 上記の式も配列数式ですので、同様に入力後Ctrl+Shift+Enterで確定して下方向にオートフィルしてください そのデータのB列の個数は以下の式になります。 =IF(E2="","",COUNTIF(B:B,E2))

nekomyumyu
質問者

お礼

なるほど!ありがとうございます。 でも先に書いていただいた形より長いので残念。 バージョンも2003と私は書いていますし… やはりニーズにこたえてくださった方をBAとしますね。

nekomyumyu
質問者

補足

申し訳ありません。お礼欄に「バージョンも2003と私は書いていますし…」と 書いてしまいましたが、今回書いておりませんでした。 質問時に書いていたつもりでした。大変失礼致しました。 他の方にも、不明瞭な質問となってしまい、申し訳ありませんでした。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんにちは! 横からお邪魔します。 こういうことですかね? C1セルに =IF(A1="","",IF(COUNTIF($B$1:$B$55,A1),COUNTIF($B$1:$B$55,A1)&"回あり","なし")) という数式を入れ、オートフィルで下へコピーではどうでしょうか? もっとシンプルな数式をお望みなら、エラー処理なし・範囲限定なしで =IF(COUNTIF(B:B,A1),COUNTIF(B:B,A1)&"回あり","なし") という数式でも良いかと思います。 失礼しました。m(__)m

nekomyumyu
質問者

お礼

ありがとうございます。質問の仕方が悪かったのかもしれません。 いや、あの… 皆さんがお答えくださっているのが、 「上記とは別に…」以下の 回数を求める内容の数式ばかりなんですが、シンプルに あるか、ないか だけがわかる式こそ知りたいと思っていて 最初に書いたんですね。 「○」「×」とかそういうのでよくって。2回とか、分かるのはついでにわかるかな程度だったので… 私の質問の仕方悪いんでしょうか。。。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

一例です。 文字の有無は、=IF(SUMPRODUCT(COUNTIF(B1:B50,A1:A41)),"あり","なし") 文字の出現数は、仮にC1に=COUNTIF($B$1,$B$50,A1)として下方向にコピー

nekomyumyu
質問者

お礼

ありがとうございます。 有無だけでも結構複雑な関数になってしまうのですね。 それなら、以下の方の結果で利用する方が楽なのかなあと思いました。 ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

これでどうでしょう =COUNTIF(A:A,B1)*COUNTIF(B:B,B1) 例の場合ですと上から0,2,0,1,1,2となります

nekomyumyu
質問者

お礼

ありがとうございました! こちらも役立てたいと思います。

nekomyumyu
質問者

補足

素早いご回答ありがとうございます。 シンプルに「あるかないか」を知る方法も知りたいです。 もっと簡単な関数だとありがたいです。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.2

C1に =IF(COUNTIF(A:A,B1)>0,COUNTIF(B:B,B1),"") と入力して、下にコピペ。

nekomyumyu
質問者

お礼

ありがとうございました! こちらも役立てたいと思います。

nekomyumyu
質問者

補足

素早いご回答ありがとうございます。 シンプルに「あるかないか」を知る方法も知りたいです。 もっと簡単な関数だとありがたいです。

  • hosu1009
  • ベストアンサー率11% (9/78)
回答No.1

多重ループで検索せよ。

nekomyumyu
質問者

お礼

すみません、検索してみましたがよくわかりませんでした。 ご回答ありがとうございます。

関連するQ&A