プロが教える店舗&オフィスのセキュリティ対策術

A列に文字列、B列に地名が入力されています。
A列の文章内の一部にB列の地名のいずれかが含まれたら、C列に0と表示、
B列のいずれも含まれていない場合は”不一致”と表示させたいです。

尚、B列の地名は100以上あります。
この場合のEXCELの数式をご教示ください。

よろしくお願いいたします。

A 回答 (4件)

No1です。



>考え方を少し教えていただけたら、今後の応用もできるのかと思います
B列の一つ(例えばB1)が含まれているかどうかを判定する内容の計算を、B列の範囲(例えばB1:B100)に拡張して配列計算させることで、一つでもヒットしたかどうかで判定しようという式です。

No2様が触れていらっしゃるように、上記の計算のままではB列に空白セルがあるとそのセル(=空白)の値は含まれていると計算されて、「該当する」と判定されてしまうので、実際には、これを除くために条件を「B列の値が空白でなく、かつ、含まれているか」という内容に変えています。

また、数式を配列数式として設定しなくても良いように、SUMPRODUCT関数を用いることで暗黙に配列計算をさせています。(=配列数式として設定しなくともよい)

基本的な部分での考え方は皆様同じと思います。
No3様がさらにスマートな回答をしてくださっています。(考え方は同様です)
    • good
    • 0

いままでの回答者さんが「含まれる」の判断にFIND関数を使用していますので、COUNTIFとワイルドカードを使用した例を示します。


B列の地名をワイルドカードの*(アスタリスク)で囲んで「*地名*」という形にしてからA列と比較することで「地名が含まれる」という判断をすることができます。
元データのあるシートの一行目は見出しで二行目からがデータとします。
sheet1のC2に
=IF(SUMPRODUCT((COUNTIF(A2,"*"&$B:$B&"*")=1)*($B:$B<>""))>0,0,"不一致")
という数式を記述し、A列にデータがある最終行まで下方向にコピーします。
添付画像を参照してください。
「EXCEL) 二つの列を照合して、あいま」の回答画像3
    • good
    • 0

こんにちは!



1行目は項目行でデータは2行目以降にあるとします。
とりあえずB100セルまでを検索文字列対象としていますが、
大前提として、B2~B100セルは空白セルはない!とします。

C2セルに
=IF(OR(ISNUMBER(FIND(B$2:B$100,A2))),0,"不一致")

配列数式なので、Ctrl+Shift+Enterで確定!(←必須★)し
フィルハンドルで下へコピーしてみてください。

※ B列に1セルでも空白セルがあるとすべて「0」となってしまいます。m(_ _)m
    • good
    • 1
この回答へのお礼

ありがとうございます。
勉強不足で数式の組み立て方はわからないのですが、結果は得られました。

countifsなどでトライしていたのですが、

検索値が複数(100以上)かつ、
A列にB列の語句が”含まれたら”という条件

で躓いておりました。
もしもしお時間ありましたら、
考え方を少し教えていただけたら、今後の応用もできるのかと思いますのでうれしいです。

よろしくお願い致します。

お礼日時:2020/09/29 19:15

こんにちは



A列のそれぞれの文字列について、「B列にある地名を含んでいる」かどうかをチェックするという意味と解釈しました。

例えば、C1セルに
=IF(SUMPRODUCT((NOT(ISERROR(FIND(B$1:B$100,A1)))*(B$1:B$100<>"")))>0,0,"不一致")
の関数式を入れて下方にフィルコピーではいかがでしょうか?

※ 上式は、ひとまず、B列の1~100行までを対象としてチェックしています。
    • good
    • 1
この回答へのお礼

うまくいきました。ありがとうございます。
すごい式ですね!
もしもしよろしければ、簡単な解説を頂けたら嬉しいです。

お礼日時:2020/09/29 19:15

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

このQ&Aを見た人はこんなQ&Aも見ています