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

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

Excelで、A列にある文字がB列にあるかないか。

Excelで、A列に入っている文字がB列にあるかないかを調べるにはどうすればいいでしょうか。 データ例 A B 算 漢 国 画 理 文 社 国 図 社 画 画 となっているときに Bの画、国、社、画を見つける方法です。 以前、Bが二文字だった場合に =IF(COUNT(1/MATCH("*"&$A$1:$A$6&"*",B1,0)),"あり","なし") という関数を教えていただいたのですが、 応用がうまくできずわからなかったので教えていただけないでしょうか。 $A$1:$A$6が必要な範囲を示すことはわかって、それは実情に合わせたのですが… 例は6個ですが、Aは41、Bは55あります。 また、上記とは別に Bの例の場合、 画が2回だ、など出てくる回数(3回以上出てくるようなケースもあり)も分かる方法があれば それも教えていただけると助かります。

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

  • ベストアンサー
  • 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/17068)
回答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

  • エクセルでA列にある文字をB列で探す

    Excelで、A列に入っている文字(一文字)がB列のどこかに含まれているか、そうでないかを調べるにはどうすればいいでしょうか。 データ例 A B 算 漢字 国 字画 理 文字 社 国字 図 数字 画 画数 となっているときに Bの字画、国字、画数、を見つける方法です。 データが少なければA列を一つ一つ検索していけばいいのはわかるのですが、まとめてできる方法を教えてください。

  • A列に同じ文字列があればB列値を合算することは可能ですか

    エクセルで次のような事を行う事は可能でしょうか、毎月、同じことを行っているので、良い案があればぜひ教えて下さい。 列A 列B (株)A商事 20 (株)B社 10 DSS社 50 (株)B社 40 (株)A商事 30 と言うデータベースがあるとします。 列Aにある会社名の中で同じ会社があれば合計して列C、列Dに表示する事はかのうでしょうか? 結果としてこのように求めたいのです。 列A 列B 列C 列D (株)A商事 20 (株)A商事 70 (株)B社 10 (株)B社 50 C商事(株) 15 C商事(株) 15 (株)A商事 20 DSS社 50 (株)A商事 30 DSS社 50 (株)B社 40 非常に膨大な数があり困っています。よろしくお願いいたします。

  • A列の文字列からB列の文字列を

    A列の文字列からB列の文字列を 引く(マイナス)することはできないでしょうか? 例) A列 - B列 - C列 ABCD - CD - AB ABCD - BCD - A ABCD - GH - ABCD という風にC列に関数で結果を表示したいのです。 方法はないでしょうか? よろしくお願いします。

  • エクセルに関しての質問です。A列とB列に任意の文字列があり

    A列にもB列にもその文字がある場合、C列にその文字以外の文字を表示させ、B列にしかない文字をD列に表示させる。 (例) A B C D 1 1 3 5 2 2 3 4 4 5 というものは出来ますか?関数でも、マクロでもいいので、とにかく、その文字を摘出したいのです。どなたか違う方法でも良いので、教えて頂きたいです。

  • EXCELでA列とB列の文字が合わせてC列に入るやり方を教えて欲しいで

    EXCELでA列とB列の文字が合わせてC列に入るやり方を教えて欲しいです。 例 A1セルは04+  B1セルは2000 C列に04+ 2000のように作りたいです(真ん中に1個スペース)。 セルが多すぎて、一個ずつやるのは大変時間かかりますので、関数のやり方をご教示ください。 よろしくお願いします。

  • エクセルで、A列に「20081020」が入っており、B列に「20081

    エクセルで、A列に「20081020」が入っており、B列に「20081030」、C列に「20090102」 と数値が入っているとします。 お分かりの通り、日付がスラッシュ無しで入っているのですが、A列に対してB,C列のような日付が何日後、もしくは何ヶ月、何日後のデータなのかわかるようにしたいです。 関数でありますでしょうか? 上記の例であればB列は10日後、C列は64日後と表示されるようにしたいです。 (数字だけでも構いません) 教えていただければ幸いです。 何卒よろしくお願いします。

  • エクセルでA列にある文字が含まれている時、そのB列に固定文字を追加したい。

    エクセルでA列にある文字が含まれている時、そのB列に固定文字を追加したい。 例) A列に東京の文字があれば、そのB列に固定文字を追加する。   A       B 1 東京都港区 2 大阪府 3 東京都    B列の元文字      2 大阪府 ※ B列にすでに文字があるときは、固定文字を前に追加したい。例)固定文字+B列の元文字 ※ B列に文字がなければ、固定文字のみを入れたい。 実行例   A       B 1 東京都港区 固定文字 2 大阪府 3 東京都    固定文字 B列の元文字  エクセルマクロでできる方法を教えてください。 宜しくお願い致します。

  • エクセル【A列とB列の不一致を知りたいです】

    初めまして。 お忙しい中、大変申し訳ございませんが、下記に関して、ご指導のほど、宜しくお願い致します。 *************** 【例】 A列    B列 あめ    チョコ ガム    ポテトチップス チョコ   あめ        ガム という列があり、A列はA1000まで続き、B列はB3000まで続きます。 必ずしも、A列の横に同じお菓子名があるわけではありません。 そこで、A列とB列を比較し、B列にしかないもの(上記「例」ではポテトチップス)のセルに色づけ、もしくはC列に、不一致するものだけ「NG」等が記載される数式を教えてください。 お忙しい中、大変申し訳ございませんが、 何卒宜しくお願い申し上げます。

  • 最下行にある数値または文字列を返す数式で困っています

       A   B 1  10   (=" ") 2  ×   (=" ") 3  17   (=" ") 4  28 5  × 6  (=B1) 7  (=B2) 8  (=B3) のように、A列に数値や文字列が入力されています。 A6以降は他のセルに入力されたものがこれから入力されます。 (A6以降は、見た目は空欄です) A列で数値であろうと文字列であろうと、とにかく見た目の最下行のセル に入力されている数値または文字列を返すにはどういう数式を使えば良いでしょうか? (上の例では、A5の×を返したいのです) =INDEX(A:A, MAX( IF(COUNTIF(A:A,"*"),MATCH("",A:A,-1)), IF(COUNT(A:A),MATCH(MAX(A:A)+1,A:A,1)))) では、A8(見た目は空欄)が返ってきてしまいますし、 =LOOKUP(10^5,I:I) では、A4の28が返ってきてしまいます。 どなたかご教授ください。 よろしくお願いします。

  • A列の文字列によってB列への入力を変える

    こんにちは。マクロ初心者で、質問なのですが、 エクセルで、A列に入力されている文字列によって、 B列文字を自動で入力するマクロを作成したいのですが、 どのように記述すればよいでしょうか? 例: A列 |B列 |  あ | 01 |A列「あ」の場合、B列の同じ行に「01」  い | 02 |A列「い」の場合、B列の同じ行に「02」 といった感じです。 初歩的な質問で申し訳ございませんがご教授願います。

専門家に質問してみよう