VLookup関数は左の列から指定のデータを探してその右側を取得します。
その反対で右から左のデータを Index関数とMatch関数を使えば取得できるとこちらの記事で紹介しました。
見返してみると、勉強中だったこともあり、わかりづらいです・・・
なので、自分自身も振り返った時にすぐ理解できるように書き直してみます。
Index関数
Index(配列, 行番号, [列番号])
セルに 「=Index(」と入力すると2類の書式が表示されますが、
もう一つのほうは、よくわからないので、今回は上の書式で進めます。
・配列・・・指定したセルの範囲です
・行番号・・・配列で指定した範囲の上から何番目(何行目)かを指定します
・列番号・・・配列で指定した範囲の左から何番目(何列目)かを指定します
以下の表で、=Index(A1:F6,4,3) という式の結果は
「い3」 になります。
Match関数
Match(検索値, 検索の範囲, [照合の種類])
・検索値・・・検索したい値を指定します
・検索の範囲・・・そのままの意味です
・照合の種類
-1・・・検索値以下の近似値
0・・・完全一致
1・・・検索値以上の近似値
の3種類があるようですが、私は「0」の完全一致しか使用したことがありません。
「-1」と「1」は検索値が数値の場合に使用できそうですね。
以下の表で、
=Match(3, A1:A6, 0) という式の結果は
「4」 になります。 (つまり上から4番目)
この Match関数で、Index関数の行番号を取得することができます。
① Index関数 + Match関数
この2つの関数を組み合わせる VLookup と同じ結果を取得できます。
=Index(A1:F6, Match(3,A1:A6, 0), 3)
② Index関数 + Match関数
同じ結果を取得できるのであれば、使い慣れている VLookup 関数を使ったほうが良いですよね。
この組み合わせをうまく使えば、VLookup関数の逆、右の値から左の値を取得できるのです。
私の扱っている資料では、下の表のようにユニークな列が必ず一番左にあるとは限らないのです。
=Index(A1:D6, Match(3, D1:D6,0), 1) という式の結果は、
「日付3」 となります。
※ Match関数の部分が Index関数の 行番号 を表しています。
Match関数の検索値にセルを指定すると より VLookup関数のようになります。
=Index(A1:D6, Match(H2, D1:D6,0), 1)
※この式はセル I2 (アイ2)に記述しています
*************************************************************
個人用マクロブックについてはこちら
リボンに登録についてはこちら
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/