Excelのこととか色々

マクロをどんな Excel ファイルにも実行できるように設定して、3秒かかる操作も1秒で完了。あといろいろ書いてみます・・・

【Excelのこと07】VLookupの逆をやりたい(Index/Match)

   f:id:tuna-kichi:20200223230814p:plain

 

 

VLookup関数は左の列から指定のデータを探してその右側を取得します。

その反対で右から左のデータを Index関数とMatch関数を使えば取得できるとこちらの記事で紹介しました。

 

www.tuna-kichi.com

 

見返してみると、勉強中だったこともあり、わかりづらいです・・・

 

なので、自分自身も振り返った時にすぐ理解できるように書き直してみます。

 

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関数サンプルテーブル

 

この Match関数で、Index関数の行番号を取得することができます。

 

 

① Index関数 + Match関数

この2つの関数を組み合わせる VLookup と同じ結果を取得できます。

=Index(A1:F6, Match(3,A1:A6, 0), 3)

 

 

② Index関数 + Match関数

同じ結果を取得できるのであれば、使い慣れている VLookup 関数を使ったほうが良いですよね。

この組み合わせをうまく使えば、VLookup関数の逆、右の値から左の値を取得できるのです。

 

私の扱っている資料では、下の表のようにユニークな列が必ず一番左にあるとは限らないのです。

  VLookupの逆ができる

 

=Index(A1:D6, Match(3, D1:D6,0), 1) という式の結果は、

「日付3」 となります。

※ Match関数の部分が Index関数の 行番号 を表しています。

 

VLookupの逆ができる

 

 

Match関数の検索値にセルを指定すると より VLookup関数のようになります。

=Index(A1:D6, Match(H2, D1:D6,0), 1)

※この式はセル I2 (アイ2)に記述しています

よりVLooupのように・・・

 

*************************************************************

 

個人用マクロブックについてはこちら

www.tuna-kichi.com

 

リボンに登録についてはこちら

www.tuna-kichi.com

 

 

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

 

 

PVアクセスランキング にほんブログ村 Excelのこととか色々 - にほんブログ村 にほんブログ村 子育てブログ 幼稚園児育児へ にほんブログ村 英語ブログ 初心者英語へ にほんブログ村 IT技術ブログ VBAへ