人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EXCELで、A列に検索対象の文字列を列挙し、B列に検索用語句を列挙してあります。どちらも順不同で、レコードの数もそれぞれ違います。
A列のレコードにB列の検索用語句が含まれているかいないかで、C列に”ある”か”ない”かが分かるようにしたいのですが、何か良い方法はあるでしょうか。

●質問者: iichico
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:Excel いるか レコード 文字列 検索
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● うぃんど
●0ポイント

順に行って動作確認と内容理解を

(1)MATCHワークシート関数

第三引数に0を指定すれば並び順は関係なくなり、完全一致のみを探し当て、第二引数上の位置をしめす。該当無しの場合は#N/Aエラーを出力する

=MATCH(A1,B:B,0)

(2)ISNAワークシート関数

式の結果が#N/Aエラーの場合に真、それ以外は偽

=ISNA(MATCH(A1,B:B,0))

(3)IFワークシート関数

真偽で処理を分ける

=IF(ISNA(MATCH(A1,B:B,0)),"ない","ある")
◎質問者からの返答

完全一致ではなく、A列のレコード内の文字列にB列の語句を含んでいれば真にしたいです。


2 ● akira623
●0ポイント

VBAを使うのが早いと思います。

下記HPなど参考にして挑戦してみてください。

http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_find.html


3 ● うぃんど
●500ポイント ベストアンサー

回答No.1は勘違いでした。すみません

C1に下記のように入力してCtrl+Shift+EnterでB1:B10のいずれかのキーワードが含まれている場合に"ある"、いずれも含まれていない場合に"ない"が表示されます

=IF(SUM(IF(ISNUMBER(FIND($B$1:$B$10,$A1)),1,0))>0,"ある","ない")

処理の流れとしては次のようになっています

(1)FIND($B$1:$B$10,$A1)

A1にB1が含まれればA1中の文字位置を返す。無ければ#N/Aエラーを返す

A1にB2が含まれればA1中の文字位置を返す。無ければ#N/Aエラーを返す

・・・

(2)ISNUMBER(FIND($B$1:$B$10,$A1))

数値なら真(存在)、それ以外は偽(不在)

(3)IF(ISNUMBER(FIND($B$1:$B$10,$A1)),1,0))

真なら1、偽なら0という数値に置き換える

(4)SUM(IF(ISNUMBER(FIND($B$1:$B$10,$A1)),1,0))

置き換えた数値をすべて加算する

(5)IF(SUM(IF(ISNUMBER(FIND($B$1:$B$10,$A1)),1,0))>0,"ある","ない")

加算した結果が0以上であれば"ある"、0なら"ない"

◎質問者からの返答

望む結果が得られました。

検索対象のレコードの数だけ、オートフィルを使ってコピーするようなので

列の並びを整理してオートフィルタを有効にすれば、データの取り出しもできそうです。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ