VLOOKUP関数で、列番指定を0より左にする方法【スプレッドシート】




Vlookup関数と言えば、検索ウィンドウを手軽にスプレッドシートに挿入できる、便利な関数ですね。一方、困るのは以下のケース…

答えを見る

E2 =Vlookup(D2,{B2:B11,A2:A11},2,0)
このファイルはこちら

こんな風に、アウトプット範囲が、検索範囲より左にあっても列番指定できたらなぁ…
以下では、本来これができない理由と一緒に、解決法をみていきましょう。


Step # 1:どうして、列番指定できないの?


Vlookup関数は、複合範囲で1番左の列を自動的に(あなたがいくらそうでないと思っても)「検索範囲」とします。これが列番「1」となるため、それよりも左にアウトプット範囲をおいて、列番指定はできません。


  1.  Vlookup関数のつくりかた
  2. = Vlookup(① 検索値, ② 複合範囲, ③ アウトプット範囲の列番, ④ True or False

    ③, ④ のつかいかた

     ③ 複合範囲中、アウトプット範囲となる列の番号。
    正の整数で表現。よって、検索範囲の左隣にアウトプット範囲がある際、「-1」とすることは不可能。


     ④ 検索値を検索範囲で探す時の、ルール。
    False(0も可)は、「完全一致」する値を探し、True(1も可)は、「最も近い数値」を探します。


  3.  実際につかってみよう
  4.  E2 = Vlookup(D2,$A$2:$B$6,2,0)

    Vlookup関数のヒント

     Vlookup関数は、検索範囲に、検索値があるか探し、それがある場合は、③ で指定した列番のアウトプット範囲から、同行に位置する値を返します。False(0)=「完全一致」を使う方が無難です。

    そう、初めからアウトプット値が右にあれば、列番指定も簡単なのにね!
    元のスタイルを変えてもOKなら、列の前後を入れ替えてしまいましょう。何事も簡単が一番です。

Step # 2:どうする? → { } で、A・B列をいれかえる

  1.  { } って?
  2. { } は中括弧(なかかっこ)・curly brace(ブレース)と呼ばれ、「配列(array)」(= 複数のセル・列や行を一つのセルから展開したり、元の順番を変える際)に使用します。

    例えば、A1={あ,い}であれば、「あ」をA1セルに、「い」をその右隣のB1に配置します。
    つまり、A1={い,あ}にすれば、 2つの列をいれかえられます!


  3.   実際につかってみよう
  4.  D2 ={B2:B6,A2:A6}

  5.   を利用して、A・B列をいれかえてVlookupする【完成】
  6. E2 =Vlookup(D2,{B2:B6,A2:A6},2,0)