• 締切済み

VLOOKUP関数について

VLOOKUP関数についてですが、検索値が複数ある場合 例) =VLOOKUP(c2,Sheet1!$A$3:$A$1687,3,FALSE) 例えば、検索値c2の箇所が複数あった場合は、範囲指定と同様に選択範囲で囲むとよいのでしょうか? またその時に、絶対参照(F4)をした方がよいのでしょうか? よろしくお願いいたします。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! VLOOKUP関数は最初にヒットしたものを返しますので、 今回のように複数表示したい場合は別の方法で行います。 >例) =VLOOKUP(c2,Sheet1!$A$3:$A$1687,3,FALSE) の数式を拝見すると、範囲指定がA列だけになっていますよね? 列番号で「3」を指定していますので、最低でもA~C列の範囲指定が必要です。 おそらくA~C列データ内でA列データと一致する行のC列データを返したい! という数式だとおもいますので、 >=VLOOKUP(C2,Sheet1!$A$3:$C$1687,3,FALSE) のようにしなければエラーになるはずです。 とりあえずやり方だけ ↓の画像のような配置になっているとします。 左側がSheet1で右側がSheet2とします。 Sheet2のD2セルに =IF(OR($C2="",COUNTIF(Sheet1!$A:$A,$C2)<COLUMN(A1)),"",INDEX(Sheet1!$C$1:$C$2000,SMALL(IF(Sheet1!$A$1:$A$2000=$C2,ROW($A$1:$A$2000)),COLUMN(A1)))) これは配列数式になりますので、Ctrl+Shift+Enterで確定! この画面から数式をコピー&ペーストする場合は 上記数式をドラッグ&コピー → Sheet2のD2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま) Ctrl+Shiftキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列うす式になります。 これをフィルハンドルで列・行方向にコピー! これで画像のような感じになります。 ※ ちなみにSheet2のどこのセルでも良いので、質問にある数式に少し手を加えて =VLOOKUP(C2,Sheet1!$A$3:$C$1687,3,FALSE) とすると Sheet1のA列が「あ」の最初にヒットする「10」が表示されるはずです。m(_ _)m

yotshii
質問者

お礼

とてもご丁寧にありがとうございました! 参考にさせていただきます。m(_ _)m

回答No.2

VLOOKUP関数の検索値は、一つの値または単一のセルと決まっています。一つの式で複数同時検索はできません。 従って、ご質問文にあるような、「検索値が複数ある」というケースにおいては、別の作戦を立てる必要があります。 具体的な方法については、シートの状態、配置などを知らなければ答えようがありませんが、より詳しい情報提供があれば、それに応じたご案内が可能です。

yotshii
質問者

お礼

ご解答ありがとうございました! 参考にさせていただきます。m(_ _)m