エクセル関数超技 | VLOOKUP 左側の列を取得(MATCH,INDEX,OFFSET) | Excel関数の解説、関数サンプルと高等テクニック



最終更新日:2014-10-31

VLOOKUP 左側の列を取得(MATCH,INDEX,OFFSET)


エクセルの関数の中で頻繁に使われるVLOOKUP、非常に便利なのですが、
キー列(検索値を探す列)より左側にある列を取得できません、
この仕様は時に不便で、左側の列を取得したい場合には他の関数を使って実現します。


まずは、VLOOKUPの説明から

VLOOKUP関数

検索値で、セル範囲の最初の列を検索し、その範囲の同じ行にある任意のセルから値を返します。
Vは縦方向(vertical)の意味です、つまり縦方向の表に対して使用します。

書式
 =VLOOKUP(検索値,範囲,列番号,検索方法)

検索値
表または範囲の左端の列で検索する値を指定します。
※ワイルドカードが使用できますが、ほぼ使う事はありません。

範囲
データを含むセル範囲です。

列番号
目的のデータが入力されている列を、範囲内の左端から数えた列数で指定します。

検索方法
TRUE(1)を指定すると、 検索値と完全に一致する値、またはその近似値(検索値未満の最大値)が返されます。
※範囲の左端の列にある値を昇順に並べ替えておく必要があります。
FALSE(0)を指定すると 検索値と完全に一致する値だけが検索されます。
完全に一致する値が範囲の左端の列に複数ある場合は、最初に見つかった値が使用されます。
完全に一致する値が見つからない場合は、エラー値 #N/A が返されます。
※TRUE(1)の使い方は少し難しいです、ほとんどの場合、FALSE(0)で良いはずです。  


では、本題のキーより左の列を取得したい場合です。
以下の表で説明します。

Excelサンプル

この表を元に、説明していきます。
この表の場合、キーとなる列Cより左側(A列B列)のデータを取得することになり、
VLOOKUPでは取得できないことになります。

そこで使用する関数が、
MATCH
INDEX
OFFSET

になります。


MATCH関数

セルの範囲内で指定された項目を検索し、その項目の相対的な位置を返します。
セル範囲は、縦方向・横方向のどちらでも指定可能です。

書式 MATCH(検査値, 検査範囲,照合の型)

検査値
値 (数値、文字列、または論理値)、またはこれらの値に対するセル参照を指定できます。

検査範囲
検索するセルの範囲を指定します。 縦方向・横方向のどちらでも指定可能ですが、1列または1行のみになります。

照合の型
1
検査値以下の最大の値が検索されます。
このとき検査範囲のデータは、昇順に並べ替えておく必要があります。

0
検査値に一致する値のみが検索の対象となります。
このとき検査範囲を並べ替えておく必要はありません。
完全に一致する値が見つからない場合は、エラー値 #N/A が返されます。
※0の場合のみ、ワイルドカードが使用できます。

-1
検査値以上の最小の値が検索されます。
このとき検査範囲のデータは、降順に並べ替えておく必要があります。


INDEX関数

セル範囲から、指定された行と列が交差する位置にあるセルの参照を返します。

書式
INDEX(範囲, 行番号[, 列番号])

範囲 セル範囲を指定します。

セル範囲が 1 行または 1 列である場合、行番号または列番号はそれぞれ省略することができます。
範囲が 1 列のみである場合は、INDEX(範囲,行番号) 範囲が 1 行のみである場合は、INDEX(範囲,列番号)

行番号
範囲の中にあり、セル参照を返すセルの行位置を数値で指定します。

列番号
範囲の中にあり、セル参照を返すセルの列位置を数値で指定します。


OFFSET関数

基準のセルまたはセル範囲から指定された行数と列数だけシフトした位置にある高さと幅のセル範囲の参照 を返します。

書式
OFFSET(基準, 行数, 列数, 高さ, 幅)

基準
基準となるセル範囲の参照を指定します。

行数
基準の左上隅のセルを上方向または下方向へシフトする距離を行数単位で指定します。
行数に正の数を指定すると下方向へシフトし、負の数を指定すると上方向へシフトします。

列数
基準の左上隅のセルを左方向または右方向へシフトする距離を列数単位で指定します。
列数に正の数を指定すると右方向へシフトし、負の数を指定すると左方向へシフトします。

高さ
オフセット参照の行数を指定します。高さは正の数である必要があります。


オフセット参照の列数を指定します。幅は正の数である必要があります。


 これで必要な関数が出そろいました。
これらの関数を組み合わせることで、
VLOOKUPではできない、左側の列を取得できます。


MATCH関数とINDEX関数を使う

Excelサンプル


Excelサンプル

=INDEX($A:$B,MATCH($E$2,$C:$C,0),1)
=INDEX($A:$B,MATCH($E$2,$C:$C,0),2)


MATCH関数とOFFSET関数を使う

Excelサンプル

Excelサンプル

=OFFSET($A$1,MATCH($E$2,$C:$C,0)-1,0)
=OFFSET($A$1,MATCH($E$2,$C:$C,0)-1,1)


INDEX関数とOFFSET関数、どちらを使用しても大差はありません。
赤字の部分が、列位置の指定になります。
上記のような表の場合は、INDEX関数のほうが、VLOOKUPからの書き直しとしては見やすいと思います。

出来上がりの関数については、あえて詳細な解説は省きます。
一つ一つの関数を読み解いて、ご自身で納得していくことで、さらに応用力が身につくはずです。
以下のページも参考にしてください。

徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)




同じテーマ「エクセル関数超技」の記事

SUMIF関数の良くある間違い
論理式とは条件式とは(IF関数,AND関数,OR関数)
複数条件の合計・件数
入力規則のリストを、追加・削除に自動対応で作成
入力規則のリストを、2段階の絞り込みで作成1
入力規則のリストを、2段階の絞り込みで作成2
ピポットテーブルの参照範囲を、追加・削除に自動対応で作成

新着記事 ・・・新着記事一覧を見る

スプレッドシートが非常に遅い、高速化するには|Google Apps Script入門(1月17日)
画像のトリミング(PictureFormat,Crop)|ExcelマクロVBAサンプル集(12月27日)
シート保護|Google Apps Script入門(12月24日)
表示の固定|Google Apps Script入門(12月24日)
グラフ|Google Apps Script入門(12月21日)
入力規則|Google Apps Script入門(12月13日)
並べ替え|Google Apps Script入門(12月12日)
メモの挿入・削除と改行文字|Google Apps Script入門(12月6日)
リンクの挿入・編集・削除|Google Apps Script入門(12月6日)
セルに数式を入れる|Google Apps Script入門(12月1日)

アクセスランキング ・・・ ランキング一覧を見る

1.RangeとCellsの使い方|ExcelマクロVBA入門
2.最終行の取得(End,Rows.Count)|ExcelマクロVBA入門
3.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技
4.Range以外の指定方法(Cells,Rows,Columns)|ExcelマクロVBA入門
5.セルの参照範囲を可変にする(OFFSET,COUNTA,MATCH)|エクセル関数超技
6.セルのコピー&値の貼り付け(PasteSpecial)|ExcelマクロVBA入門
7.ひらがな⇔カタカナの変換|エクセル基本操作
8.CSVの読み込み方法|ExcelマクロVBAサンプル集
9.変数とデータ型(Dim)|ExcelマクロVBA入門
10.VBAのFindメソッドの使い方には注意が必要です|ExcelマクロVBA技術解説



  • >
  • >
  • >
  • VLOOKUP 左側の列を取得(MATCH,INDEX,OFFSET)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。

    ↑ PAGE TOP