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関数を組み合わせてを使うことを勧める人もいます。
ご質問は下の 「コメントを書く」 からお願いします。
ExcelやVBA全般に関わる質問で、比較的簡単にお答えできるものはできる限り回答したいと思います。
回答を公開でなくメールでやり取りしたいという場合は、その旨記載していただければ非公開で回答することも可能です。
有償での作業依頼は非公開にしますので、条件等をお知らせください。