Excel VBAのVLOOKUP関数は「左から右へ」検索して一致した列の値を取得しますが…
「左側の値を取得したい」と思ったことはありませんか?
本記事ではVLOOKUP関数を使わずに左側の値を取得する方法を紹介します。
うめ
「そういえばこんな使い方があったな!」ということを理解しておけば色々な場面で役立ちますよ!
やりたいこと
ここでは事業所「C支店」で働いている「従業員No」を取得したいとします。
「従業員No」は検査値(「事業所」)よりも左側にあるためVLOOKUP関数では取得できません。
※列の入れ替えができない想定です。
INDEX関数&MATCH関数
MATCH関数とINDEX関数を組み合わせると左側の値を取得できますが、初めて使う人は結構わかりにくいと思うので細かく説明します。
関数として設定するとこんな感じになります。
「=INDEX(❶Ws1.Range(“B:D”), ❷MATCH(❹F3, ❺D:D, ❻0), ❸1)」
補足ですが「❻照合の型」は1(以下),0(完全一致),-1(以上)と設定できます
※基本的には0(完全一致)を使うことがメインになると思います。
VBAのコード
1 2 3 4 5 6 7 8 9 10 11 |
Sub sample() Dim Ws1 As Worksheet Set Ws1 = Worksheets("Sheet1") Dim Code As String: Code = WorksheetFunction.Index(Ws1.Range("B:D"), WorksheetFunction.Match(Ws1.Range("F3"), Ws1.Range("D:D"), 0), 1) Ws1.Range("G3") = Code End Sub |
コードを実行すると「事業所」よりも左側にある「従業員No」が取得できます。
まとめ
今回はINDEX関数&MATCH関数を組み合わせて検索値よもり左側にある値を取得する方法を紹介しました。
普段はVLOOKUPの方が馴染みがあると思いますが、「INDEX関数&MATCH関数」も便利な関数ですので、使えるようにしておきたいですね。