• 締切済み

VLOOKUPで●●を含む文字列を検索したい

VLOOKUP関数を使って、検索値をD列、範囲をAB列にして、 B列の値段をE列に表示させたいと思っています。     A列        B列  C列     D列     E列 おいしいオレンジジュース   150 りんごジュース りんごジュース 天然果汁   200 オレンジジュース 検索範囲の文字には検索値の文字が含まれてはいるのですが、前や後ろ、もしくは前後両方に文字が追加されています。 あれこれ調べましたが、逆の条件の場合は他の関数+ワイルドカードの組み合わせでできるようでしたが、 自分がやりたいことは調べきれず、質問させていただきました。 一応、TRUE、FALSEで切り替えて検索してみたのですが、希望している結果とは違うものが出てしまいました。 (同じ結果が何度もダブって出る。データ的に1対1しかないのに) 文字列の場合のVLOOKUP関数のTRUE、FALSEの定義もよくわかりません。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

これは多分、結構難しい問題ですね。 VLOOKUPではできないと思いますが、私の勘違いかもしれませんので 良くテストしてください。 ーー 例データ 検索表 E1:F3 ジュース 50 塩 100 缶詰 200 ーー 例データ A1:A7 オレンジジュース 瀬戸の塩 かに缶詰 缶詰にしん ジュースの素 塩辛 鮭缶詰め B1に(この列は、中間結果が正しいかどうか確認のため出したものです。後に使わない式を出します。) =MIN(IF(NOT(ISERROR(FIND($E$1:$E$10,$A1))),ROW($E$1:$E$10),99)) と入れて、SHIFT,CTRL,ENTERの3つのキーを同時押しする。 配列数式という。 式を下方向に複写 結果(該当するE列の何行目かの数字が返るわけです。) B1:B7は オレンジジュース 1 瀬戸の塩 2 かに缶詰 3 缶詰にしん 3 ジュースの素 1 塩辛 2 鮭缶詰め 3 となる。 C1に =INDEX($F$1:$F$10,B1,1) と入れて式を下方向に複写 オレンジジュース 1 50 瀬戸の塩 2 100 かに缶詰 3 200 缶詰にしん 3 200 ジュースの素 1 50 塩辛 2 100 鮭缶詰め 3 200 となる。 B列を使わない式にすると =INDEX($F$1:$F$10,MIN(IF(NOT(ISERROR(FIND($E$1:$E$10,$A1))),ROW($E$1:$E$10),99)),1) と入れて SHIFT,CTRL,ENTERの3つのキーを同時押しする。 式を下方向に複写する。 結果 前記と同じく 50 100 200 200 50 100 200 式の10はとりあえずの例で、E列の行数+アルファにしてください。 E列が100行を越えるなら、99->999などに修正してください。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

例えば、次の数式で検索可能ですが如何でしょうか。 =VLOOKUP("*"&C1&"*",A:B,2,FALSE) 文字列の場合、FALSE(検索値と一致)を選択して下さい。 TRUEは検索値未満の最大値を選択するので期待値と相違します。

関連するQ&A