低所得の青色申告個人事業主のブログ

開業から経験で得た情報をお知らせしていきたいと思います。

= グローバル ナビゲーション =

【Excel】VLOOKUP関数が使えないときに使えるINDEX関数


[ スポンサー リンク ]

VLOOKUP関数は検索値が左にあることが必要です。

検索値が右側にあった場合にも使えるINDEX関数を説明します。

 

INDEX関数

関数

= INDEX ( 範囲, 行位置, 列位置 )

INDEX関数は、相対的な行位置、列位置を指定してセルを取得する関数です。

以下の表を前提として、具体的に説明しましょう。

  A B C D E
1 国番号 2桁 3桁 数字 国名
2 1 US USA 840 アメリカ合衆国
3 7 RU RUS 643 ロシア
4 33 FR FRA 250 フランス
5 34 ES ESP 724 スペイン
6 64 GB GBR 826 イギリス
7 49 DE DEU 276 ドイツ
8 55 BR BRA 76 ブラジル
9 61 AU AUS 36 オーストラリア
10 65 SG SGA 702 シンガポール
11 81 JP JPN 392 日本
12 86 CN CHN 156 中華人民共和国
13 91 IN IND 356 インド

この表の範囲内の4行目・3列目のセルを取得します。

  A
15 = INDEX ( A2:E13, 4, 3 )

行番号や列番号は相対位置です。

  A
15 ESP

INDEX関数でどのようにしてVLOOKUP関数のように検索値から値を取得するのか、これから説明します。

 

 

検索値が右にあるケース

例えば先ほどの表で、2桁コードから国名を取得したい場合はVLOOKUP関数が取得できます。

VLOOKUP関数はこちらで少し説明しています。

account-it-dentist.hatenablog.com

しかし、逆に国名から3桁コードを取得したい場合は、国名は3桁コードの右にあるため、表を組みかえない限りVLOOKUP関数では実現できません。

それでは国名から3桁コードを取得する具体的な手順を説明していきます。

フランスの3桁コードを取得するため、B15セルに数式をセットします。

  A B
15 フランス  

 

MATCH関数

MATCH関数はここで説明しました。

account-it-dentist.hatenablog.com

2桁コードの列番号は '3' ですが、復習のためMATCH関数で動的に取得します。

  A B
15 フランス  
16 = MATCH ( "3桁", A1:E1, 0 )  

ここからがVLOOKUPの代わりとなる検索ですが、フランス(=A15)の行番号を取得します。

  A B
15 フランス  
16 3 = MATCH ( A15, E2:E13, 0 )

 

組み合わせてVLOOKUP関数の代わりに使用する

これで行番号と列番号が取得できたので、INDEX関数でフランスの3桁コードを取得します。

  A B
15 フランス = INDEX ( A2:E13, MATCH ( A15, E2:E13, 0 ), MATCH ( "3桁", A1:E1, 0 ) )
16 3 3
  A B
15 フランス FRA
16 3 3

 

INDEX関数はVLOOKUP関数よりめんどくさいですが、もちろんVLOOKUP関数が使える場面でも使用できる汎用性があります。

VLOOKUP関数は使わず、INDEX関数とMACTH関数を組み合わせてを使うことを勧める人もいます。

 


ご質問は下の 「コメントを書く」 からお願いします。

ExcelVBA全般に関わる質問で、比較的簡単にお答えできるものはできる限り回答したいと思います。

回答を公開でなくメールでやり取りしたいという場合は、その旨記載していただければ非公開で回答することも可能です。

有償での作業依頼は非公開にしますので、条件等をお知らせください。