アプリ版:「スタンプのみでお礼する」機能のリリースについて

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回以上出てくるようなケースもあり)も分かる方法があれば
それも教えていただけると助かります。

A 回答 (8件)

No.5です!


余計なお世話を焼いてしまったみたいですね!

B列を判断したいわけですよね?
単純にあるか?ないか?というだけであれば
↓の画像のような方法もあります。

数式で処理する場合は
C1セルに
=IF(COUNTIF(A:A,B1),"○","×")
という数式を入れオートフィルで下へコピー!
これでA列にあれば「○」、なければ「×」が表示されます。

他の方法としては条件付書式を使ってあればセルに色を付ける方法はどうでしょうか?

当方使用のExcel2003の場合ですが
B列すべてを範囲指定(列番号の「B」のところでクリック) → メニュー → 書式 → 条件付書式
→ 「数式が」を選択 → 数式欄に
=COUNTIF(A:A,B1) として → 書式 → 塗りつぶしのパターンで「赤」を選択しています。

これでB列にあるものは赤になると思います。

参考になれば良いのですが
これも的外れならごめんなさいね。m(__)m
「Excelで、A列にある文字がB列にある」の回答画像6
    • good
    • 0
この回答へのお礼

そうです!
「=IF(COUNTIF(A:A,B1),"○","×")」こそ私の求めていたものです!

なぜ皆さんそんな難しく考えてしまわれるのでしょうか…
なにか呼び水になるようなことを書いたでしょうか。

ともかくこれ以上私がわからないがために
ムダになってしまうご回答をいただかないように、BAを入れたいと思います。

ありがとうございました。

お礼日時:2011/01/21 01:07

単一のエクセル通常(配列数式以外と言うこと)関数では出来ないとおもう。


その配列数式だが
=SUM(IF(NOT(ISERROR(MATCH(A1:A8,$B$1:$B$8,0))),1,0))
と入れてSHIFT+CTRL+ENTERキーの3つを同時押しする。
例データ
A列  B列
as
bt
cl
dd
eb
sx
re
fg

結果
4(b,d,e,sの4セル)
A列に、もし同じ文字が2箇所あると上記一致回数回数が増えてしまうが。
ーー
この結果が1以上だと同じ文字が両列で存在するということになる。
ーー
関数では関数を繰り返す仕組みは配列数式しかないので上記を考えた。
ただ難しくて直ちに断言できないが、SUMPRODUCT関数を使うと、配列数式でなくても同じことをやれる可能性はあると思う。(日頃配列数式とSUMPRODUCTの双対(そうつい)性を感じるので)
VBAで考えても、A列の行ごとのくり返しをするロジックは避けられないと思う。
VBAを使って見かけ上はユーザー関数をつくり、1関数化は出来るが。
    • good
    • 1
この回答へのお礼

>単一のエクセル通常(配列数式以外と言うこと)関数では出来ないとおもう。

よくわかりませんが

=IF(COUNTIF(A:A,B1),"○","×")

が私の求めていた内容を示してくれました。

たくさんご説明していただきましたが正直全く分かりませんでしたし
「下記より簡単なものを…」と何度もお願いしているのに、
そんな難しいことを書き込まれても…
お礼を言うべきなのか少し悩んでしまいますが

お時間をとっていただいたことに感謝します、ありがとうございました。

お礼日時:2011/01/21 01:11

あるかないかだけの判定ならたとえば以下のような配列数式で判定できます。


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))
「Excelで、A列にある文字がB列にある」の回答画像7

この回答への補足

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

補足日時:2011/01/21 15:40
    • good
    • 0
この回答へのお礼

なるほど!ありがとうございます。

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

お礼日時:2011/01/21 01:14

こんにちは!


横からお邪魔します。

こういうことですかね?

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
    • good
    • 0
この回答へのお礼

ありがとうございます。質問の仕方が悪かったのかもしれません。

いや、あの…
皆さんがお答えくださっているのが、
「上記とは別に…」以下の
回数を求める内容の数式ばかりなんですが、シンプルに


あるか、ないか



だけがわかる式こそ知りたいと思っていて
最初に書いたんですね。

「○」「×」とかそういうのでよくって。2回とか、分かるのはついでにわかるかな程度だったので…

私の質問の仕方悪いんでしょうか。。。

お礼日時:2011/01/20 17:16

一例です。


文字の有無は、=IF(SUMPRODUCT(COUNTIF(B1:B50,A1:A41)),"あり","なし")
文字の出現数は、仮にC1に=COUNTIF($B$1,$B$50,A1)として下方向にコピー
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2011/01/20 16:43

これでどうでしょう


=COUNTIF(A:A,B1)*COUNTIF(B:B,B1)

例の場合ですと上から0,2,0,1,1,2となります

この回答への補足

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

補足日時:2011/01/20 14:59
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/01/21 01:17

C1に


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

この回答への補足

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

補足日時:2011/01/20 14:59
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/01/21 01:17

多重ループで検索せよ。

    • good
    • 0
この回答へのお礼

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

お礼日時:2011/01/20 15:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!