- ベストアンサー
エクセル/データの中で文字列を含むセルを探す。
お世話になります。 XP/2003 使用です。 一定範囲のデータの中で、”いずれかの”の文字列を含む場合を 抽出したいです。 例えばA列に下記のデータが入力されているとします。 アメリカ 日本 中国 東京 新宿駅 銀座店 八重洲ビル ---- この中で、文字列の中に、「駅」「店」「ビル」の”いずれか”を含むセルを B列に1などを返す方法が知りたいです。 上記の例の場合、 新宿駅 銀座店 八重洲ビル の行のB列には1が入力されるイメージです。 よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 一例です。 ↓の画像のようにD列に検索文字の表を作成しておきます。 余計なお世話かもしれませんが、「*」(アスタリクス)は今後検索文字が増えた場合 アスタリクスの欄に文字を入力します。 (空白セルを範囲指定しないため) B1セルに =IF(OR(ISNUMBER(FIND(D$1:D$6,A1))),1,"") これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定! この画面から数式をコピー&ペーストする場合は B1セルを選択 → 数式欄に貼り付け → そのままShift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これをオートフィルで下へコピーすると 画像のような感じになります。m(_ _)m
その他の回答 (5)
- foomufoomu
- ベストアンサー率36% (1018/2761)
>この中で、文字列の中に、「駅」「店」「ビル」のいずれかを >含むセルをB列に1などを返す方法が知りたいです。 ストレートに文字検索関数を使うべきでしょう。 =1-AND(ISERROR(FIND("駅",A1)),ISERROR(FIND("店",A1)),ISERROR(FIND("ビル",A1))) FIND関数は、文字列が含まれていないとエラーになるので、エラーをチェックするISERROR関数で調べ、結果の論理積ですべてエラーなら1(TRUE),どれかに当てはまる文字があれば0(FALSE)を得て、それを1から引いています。
お礼
なるほど、SERROR関数はこのように使うのですね。 Find関数でがんばっていたのですが、助かりました。 ありがとうございます^^
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
No.3 です。書き漏らした情報を追記します。 難解ですが、次式でもオッケーです。「*1」などの付加は不要です。 F1 =sumproduct(count(index(find(D$1:D$3,a1),)))
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
B1 =sum(countif(a1,"*"&{"駅","店","ビル"}&"*")) F1 =sumproduct(countif(a1,"*"&D$1:D$3&"*")) …… D1:D3 のセル範囲に「駅」、「店」、「ビル」が入力されている場合 ※ B1 セルでは SUMPRODUCT 関数までは不要 「0」の代わりに空文字列「""」を返すと、フラグを使って四則演算したい場合に障害になるため、後で処理の手間が増えることがあります。Excel は、書式にこだわる必要がない場合はできるだけ文字列よりも数値にしておいたほうが、データの利便性が高まります。
お礼
ワイルドカード文字 "*" の使い方がとても勉強になりました。 ありがとうございました!!
- keithin
- ベストアンサー率66% (5278/7941)
B1に =SUMPRODUCT((ISNUMBER(FIND({"駅","店","ビル"},A1)))*1) 以下コピー みたいな。
お礼
SUMPRODUCT関数は、初めてだったのでよくわからなかったのですが、{}で、単語を増やせるのでしたか。 助かりました。ありがとうございました(^^♪
- KURUMITO
- ベストアンサー率42% (1835/4283)
次の式をB1セルに入力し下方にドラッグコピーします。 =IF(A1="","",IF(COUNTIF(A1,"*駅*")+COUNTIF(A1,"*店*")+COUNTIF(A1,"*:ビル*")>0,1,""))
お礼
KURUMITO さま 早速のご回答ありがとうございます。 「+」でCOUNTIFの条件を加えられるんですね。 気づきませんでした。 助かりました^^
お礼
画像付きで、簡単な関数だけでありがとうございました! 助かりました(^^♪