スキップしてメイン コンテンツへ

VLOOKUP、INDEX、または MATCH を使って値を検索する

注: 最新のヘルプ コンテンツをできるだけ早く、お客様がお使いの言語で提供したいと考えております。このページは、自動翻訳によって翻訳されているため、文章校正のエラーや不正確な情報が含まれている可能性があります。私たちの目的は、このコンテンツがお客様の役に立つようにすることです。お客様にとって役立つ情報であったかどうかを、このページの下部でお知らせください。簡単に参照できるように、こちらに英語の記事があります。

office の場所番号の一覧があり、各オフィスで使用されている従業員を知る必要があるとします。スプレッドシートは非常に大きく、難しいタスクであると考えられる場合があります。lookup 関数を使用すると、実際には非常に簡単です。

VLOOKUP関数とHLOOKUP関数は、インデックス一致と共に、Excel で最も便利な関数の一部です。

注: ルックアップウィザード機能は Excel では使用できなくなりました。

VLOOKUP の使用例を次に示します。

=VLOOKUP(B2,C2:E7,3,TRUE)

この例では、B2 は最初の引数(関数が機能する必要のあるデータの要素) です。VLOOKUP では、この最初の引数は検索する値です。この引数には、セル参照、または "smith" や21000などの固定値を指定できます。2番目の引数は、セル範囲の C2-: E7 で、検索対象の値を検索します。3番目の引数は、シークする値が含まれるセル範囲内の列です。

4番目の引数は省略可能です。TRUE または FALSE を入力します。TRUE を入力するか、引数を空白のままにした場合、関数は最初の引数で指定した値との近似一致を返します。FALSE を入力した場合、関数は最初の引数で指定された値と一致します。つまり、4番目の引数を空白にしておくか、または TRUE を入力すると、より柔軟になります。

この例では、関数がどのように動作するかを示します。セル B2 (1 番目の引数) に値を入力すると、セル範囲 C2: E7 (2 番目の引数) のセルが検索され、その範囲の3番目の列 (3 番目の引数) から最も近い近似一致が返されます。

VLOOKUP 関数の典型的な使い方

4番目の引数が空であるため、関数は近似一致を返します。そうでない場合は、列 C または d のいずれかの値を入力して結果を取得する必要があります。

VLOOKUP を使い慣れている場合は、HLOOKUP 関数を使うと、同じように簡単に使用できます。同じ引数を入力しますが、列ではなく行を検索します。

VLOOKUP の代わりに INDEX と MATCH を使用する

vlookup 関数の使用には制限があります。 vlookup 関数は、左から右にのみ値を検索できます。つまり、検索する値が含まれる列は、必ず戻り値を含む列の左側に配置する必要があります。スプレッドシートがこの方法で作成されていない場合は、VLOOKUP は使わないでください。代わりに INDEX 関数と MATCH 関数を組み合わせて使用します。

この例では、検索する値であるシカゴが左端の列にない小さいリストについて説明します。 そのため、VLOOKUP を使うことはできません。 代わりに、MATCH 関数を使って範囲 B1:B11 でシカゴを検索します。 シカゴは行 4 にあります。 次に、INDEX ではその値を引数として使用して、4 番目の列 (列 D) にあるシカゴの人口を検索します。 使用された数式はセル A14 に表示されます。

VLOOKUP の代わりに INDEX と MATCH を使用する方法の例については、「Bill jelen 氏 of Microsoft MVP https://www.mrexcel.com/excel-tips/excel-vlookup-index-match/ 」を参照してください。

試してみましょう

参照機能を使用して、独自のデータで試してみる場合は、次のサンプルデータをご覧ください。

職場での VLOOKUP の例

次のデータを空白のスプレッドシートにコピーします。

ヒント: データを Excel に貼り付ける前に、列 A ~ C の列幅を250ピクセルに設定し、[文字列の折り返し] ([ホーム] タブの [配置] グループ) をクリックします。

濃度

粘度

温度

0.457

3.55

500

0.525

3.25

400

0.606

2.93

300

0.675

2.75

250

0.746

2.57

200

0.835

2.38

150

0.946

2.17

100

1.09

1.95

50

1.29

1.71

説明

結果

=VLOOKUP(1,A2:C10,2)

近似一致を使って、列 A で値 1 を検索し、列 A で 1 以下の最大値である 0.946 を見つけて、同じ行の列 B の値を返します。

2.17

=VLOOKUP(1,A2:C10,3,TRUE)

近似一致を使って、列 A で値 1 を検索し、列 A で 1 以下の最大値である 0.946 を見つけて、同じ行の列 C の値を返します。

100

=VLOOKUP(0.7,A2:C10,3,FALSE)

完全一致を使って、列 A で値 0.7 を検索します。列 A に完全一致がないため、エラーが返されます。

#N/A

=VLOOKUP(0.1,A2:C10,2,TRUE)

近似一致を使って、列 A で値 0.1 を検索します。0.1 は列 A の最小値よりも小さいため、エラーが返されます。

#N/A

=VLOOKUP(2,A2:C10,2,TRUE)

近似一致を使って、列 A で値 2 を検索し、列 A で 2 以下の最大値である 1.29 を見つけて、同じ行の列 B の値を返します。

1.71

HLOOKUP の例

次の表のすべてのセルをコピーし、Excel の空のワークシートのセル A1 に貼り付けます。

ヒント: データを Excel に貼り付ける前に、列 A ~ C の列幅を250ピクセルに設定し、[文字列の折り返し] ([ホーム] タブの [配置] グループ) をクリックします。

ベアリング

ボルト

3/4

3/4

平日

6

7

10

6@@

8-bit

以降

数式

説明

結果

=HLOOKUP("ギア", A1:C4, 2, TRUE)

行 1 の "ギア" を検索し、同じ列 (列 A) の行 2 の値を返します。

3/4

=HLOOKUP("ベアリング", A1:C4, 3, FALSE)

行 1 の "ベアリング" を検索し、同じ列 (列 B) の行 3 の値を返します。

7

=HLOOKUP("ベ", A1:C4, 3, TRUE)

行 1 の "ベ" を検索し、同じ列の行 3 の値を返します。 "ベ" に完全に一致する値が見つからないので、行 1 の中の "ベ" よりも小さい最大値である、列 A の "軸" が使用されます。

6

=HLOOKUP("ボルト", A1:C4, 4)

行 1 の "ボルト" を検索し、同じ列 (列 C) の行 4 の値を返します。

以降

=HLOOKUP(3, {1,2,3, "ア", "イ", "ウ", "エ", "オ", "カ"}, 2, TRUE)

3 行の配列定数の中で数値 3 を検索し、同じ列 (ここでは 3 番目) の行 2 から値が返されます。 配列定数の中には、値の行が 3 つあり、各行はセミコロン (;) で区切られています。 "c" は 2 行目および 3 と同じ列の中にあるので、"C" が返されます。

c

インデックスと一致の例

この最後の例では、INDEX 関数と MATCH 関数を一緒に使用して、5つの都市ごとに、最も早い請求番号とそれに対応する日付を返します。日付は数値として返されるため、TEXT 関数を使用して日付として書式を設定します。INDEX 関数は実際には、MATCH 関数の結果をその引数として使います。INDEX 関数と MATCH 関数の組み合わせは、それぞれの数式で2回使用されます。最初に、請求書番号を返し、その後で日付を返します。

次の表のすべてのセルをコピーし、Excel の空のワークシートのセル A1 に貼り付けます。

ヒント: データを Excel に貼り付ける前に、列 A ~ D の列幅を250ピクセルに設定し、[文字列の折り返し] ([ホーム] タブの [配置] グループ) をクリックします。

販売契約高

都市

請求日

市区町村ごとの請求日が最も早い請求書とその日付

3115

荒川区

12/04/07

="荒川区 = "&INDEX($A$2:$C$33,MATCH("荒川区",$B$2:$B$33,0),1)& "、請求日: " & TEXT(INDEX($A$2:$C$33,MATCH("荒川区",$B$2:$B$33,0),3),"yy/mm/dd")

3137

荒川区

12/04/09

="横浜市 = "&INDEX($A$2:$C$33,MATCH("横浜市",$B$2:$B$33,0),1)& "、請求日: " & TEXT(INDEX($A$2:$C$33,MATCH("横浜市",$B$2:$B$33,0),3),"yy/mm/dd")

3154

荒川区

12/04/11

="船橋市 = "&INDEX($A$2:$C$33,MATCH("船橋市",$B$2:$B$33,0),1)& "、請求日: " & TEXT(INDEX($A$2:$C$33,MATCH("船橋市",$B$2:$B$33,0),3),"yy/mm/dd")

3191

荒川区

12/04/21

="前橋市 = "&INDEX($A$2:$C$33,MATCH("前橋市",$B$2:$B$33,0),1)& "、請求日: " & TEXT(INDEX($A$2:$C$33,MATCH("前橋市",$B$2:$B$33,0),3),"yy/mm/dd")

3293

荒川区

12/04/25

="沼津市 = "&INDEX($A$2:$C$33,MATCH("沼津市",$B$2:$B$33,0),1)& "、請求日: " & TEXT(INDEX($A$2:$C$33,MATCH("沼津市",$B$2:$B$33,0),3),"yy/mm/dd")

3331

荒川区

12/04/27

3350

荒川区

12/04/28

3390

荒川区

12/05/01

3441

荒川区

12/05/02

3517

荒川区

12/05/08

3124

横浜市

12/04/09

3155

オースティン

12/04/11

3177

オースティン

12/04/19

3357

オースティン

12/04/28

3492

横浜市

12/05/06

3316

船橋市

12/04/25

3346

Dallas

12/04/28

3372

Dallas

12/05/01

3414

Dallas

12/05/01

3451

Dallas

12/05/02

3467

Dallas

12/05/02

3474

Dallas

12/05/04

3490

Dallas

12/05/05

3503

船橋市

12/05/08

3151

前橋市

12/04/09

3438

ニューオーリンズ

12/05/02

3471

前橋市

12/05/04

3160

沼津市

12/04/18

3328

沼津市

12/04/26

3368

沼津市

12/04/29

3420

横浜市

12/05/01

3501

沼津市

12/05/06

関連項目

クイックリファレンスカード: VLOOKUP リフレッシャー

検索/行列関数 (リファレンス)

VLOOKUP 関数で範囲引数を使用する

Office のスキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×