雪ん子パースペクティヴ

読むとちょっとタメになるエントリー。

【VLOOKUP関数】検索範囲の始点は左端でなければならない。

右と下にしか動けないらしい。

 

はろ、yukiです。

 

今回はExcelのVLOOKUP関数とMATCH関数についてご紹介します。

それらは値を検索する関数に分類されます。

使用方法は基より、特にお伝えしたいのが、検索の仕方です。

(どのように検索するかは、関数を使用するのみであればさほど気にしなくても良い)

 

まずは、VLOOKUP関数を説明します。下の図をご覧ください。

f:id:yuki_sasano:20170917155745j:plain

VLOOKUP関数は、「=VLOOKUP(検索値、範囲、列番号、検索方法)」と記述し、返り値は検索値と同じ行にある範囲内における列番号の位置にある値です。

 

もう少しかみ砕いて説明すると、検索値は検索範囲の左端にある必要があります。

検索値の列を列番号の「1」としているため、赤の塗りつぶしがある例は結果に誤りが表示されています。

 

この誤りは、検索値が検索範囲内の「2」列目にあること、検索値の右側の値を検索していることが原因です。

 

つまり、VLOOKUP関数は、まず検索値を上から下に検索し、次に指定された列番号に従って右に検索する、ということが分かります。

※VLOOKUPの"V"は"Vertical"で、「縦方向」という意味。

 

ちなみに、VBAでVLOOKUP関数を使用する場合は下記。

Sub vlookup()

    '=VLOOKUP(B3,B3:D5,2,FALSE)
    vluCell = ActiveSheet.Application.WorksheetFunction.vlookup(Range("B3"), Range("B3:D5"), 2, False)
    MsgBox (vluCell)

    '=VLOOKUP(1,B3:D5,2,FALSE)
    vluValue = ActiveSheet.Application.WorksheetFunction.vlookup(1, Range("B3:D5"), 2, False)
    MsgBox (vluValue)
    
End Sub

 

次に、MATCH関数です。下の図をご覧ください。 

f:id:yuki_sasano:20170917155741j:plain

MACTH関数は、「=MATCH(検索値,範囲,照合の種類)」と記述し、返り値は検索範囲内での位置です。

 

もう少しかみ砕いて説明すると、検索範囲は1列のみの必要があり、返り値は検索範囲の一番上から何番目に位置するかとなります。

 

つまり、一番上から相対的に何番目かを返すため、セル(例えばC3、C4など)の絶対位置を返すわけではありません。

 

ちなみに、VBAでMACTH関数を使用する場合は下記。

Sub match()

    '=MATCH(D3,D3:D5,0)
    mchCell = ActiveSheet.Application.WorksheetFunction.match(Range("C3"), Range("C3:C5"), 0)
    MsgBox (mchCell)
    
    '=MATCH("Tom",D3:D5,0)
    mchValue = ActiveSheet.Application.WorksheetFunction.match("Tom", Range("C3:C5"), 0)
    MsgBox (mchValue)

End Sub

 

 

以上。