- 締切済み
エクセルで、文字の完全一致ではなく、文字の一部が含まれているかをチェックする方法
質問させてください。 エクセルのA列の文字の一部に、B列の文字が含まれているかどうか、 をチェックする数式を教えて頂けないでしょうか。 例えば、 A列:「赤 青」、「白 黄」、「緑 黒」 B列:「赤」「青」「黒」 この場合、A列の「赤 青」と「緑 黒」のセルの横に○、 というようにしたいのですが。。 VLOOKやCOUNTIFでは、“文字の一部”というのはチェックできないようで、 かつ、LEFTやRIGHTも使いづらい場合です。 きっと簡単な数式があるのでは、と思いお尋ねしました。 どうぞ宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Cupper
- ベストアンサー率32% (2123/6444)
結局何をしたいのかよく分かりませんが・・・ ■当初の質問 A列の前に一列挿入 ↓ 挿入したA1セルに次の関数を入力 =IF(ISERROR(FIND(C1,B1,1)),"","○") ↓ 必要な行数だけA1セルを下にコピー ↓ VLOOKUP関数で文字が含まれるB列のセルを表示させる =VLOOKUP("○",A:B,2,FALSE) A列の前に列を挿入してそこに関数を入力するのは、VLOOKUP関数は範囲の一番左の列を検索するからです。 ISERROR関数は検査対象がエラーであれば TRUE、エラーでなければ FALSE を返します。 これを使い FIND関数の結果、検索文字列を含まずエラーになった場合は TRUE、文字列が含まれた場合は FALSE とします。 あとは IF関数で TRUEならば検索文字列を含まないため空白("")、FALSEならば検索文字列を含むため "○" を表示させています。 ただし、VLOOKUP関数は一番上に出てきた対象を値として返しますので、該当する全ての値を返すことはできません。 ■お礼の質問に対する回答 A列1行目から、スノーボード、ボディボードなど検索対象がある場合、B列1行目に =IF(ISERROR(FIND("ボード",A1,1)),"","○") などとし、必要な行数だけ下にコピー >きっと簡単な数式があるのでは~ と言うことでしたので、FIND関数や SEARCH関数を回答しましたが、 エラーになった場合の対処が分からないかもしれないと SUBSTITUTE関数の例も 合わせて回答したのですが・・・。 普段から関数ウィザードで使えそうな関数を探すようにしましょう。
- Cupper
- ベストアンサー率32% (2123/6444)
VLOOKUP関数の中に含もうとすると無理が生じます。 参照する一覧側に FIND関数などの数式の列を追加してその列を VLOOKUP関数で拾ってきてはどうでしょう。
お礼
Cupper様 毎々ご回答ありがとうございます。 質問の仕方がよくなかったかもしれないのですが、 「ボード」が含まれるものを探せ、という時に、 ・スノーボード ・ボディボード などの横列に○を付ける、という方法は FIND関数で可能でしょうか。 知識不足で度々申し訳ありませんが、宜しくお願い致します。
- Cupper
- ベストアンサー率32% (2123/6444)
こんなのはどうですか。 =FIND(B1,A1,1) =SEARCH(B1,A1,1) 検索文字列が含まれていれば数値が返る。含まれていなければエラーが返る。 =LEN(A1)-LEN(SUBSTITUTE(A1,B1,"")) 検索文字列が含まれていれば "1" 以上の数値が返る。含まれていなければ "0" が返る。
お礼
Cupper様 ご回答ありがとうございます。 恐れ入りますが、更に質問なのですが、 範囲は指定できないでしょうか。 VLOOKのように使用しようとしてもできないようで。。 お手数ですが、どうぞ宜しくお願い致します。
お礼
Cupper様 毎々ありがとうございます。 お手数をお掛けして誠に申し訳ありません。。 =IF(ISERROR(FIND("ボード",A1,1)),"","○")において、 “ボード”の部分に、範囲指定等で複数の単語を おけないでしょうか。。 A群:スノーボード、ボディボード、白肌、黒肌、… B群:ボード、白、… において、B群の単語をA群が含む場合を探す という場合で、 上記の場合、「スノーボード」「ボディボード」「白肌」は、 B群の単語「ボード」「白」を含んでいる、とみなされ、 ○をつける、といったような具合です。 同じような意味合いで質問しているつもりでしたが、 説明が悪く申し訳ありません。 お忙しいところ恐縮ですが、ご都合つきましたら、 御回答の程、何卒宜しくお願い致します。