大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、「VLookup関数」を使って「別シート」を参照するには「Worksheets」を使います。「VLookup関数」をVBAで使う方法として「WorksheetFunction」と「数式埋め込み」があって、「別シート」を参照したい場合は「WorksheetFunction」が簡単です。

はじめに

この記事では、VBAでVLookup関数を使って「別シート」を参照する方法について、ご紹介します。

「別シート」を参照するには「Worksheets」を使います。

「VLookup関数」をVBAで使う方法として「WorksheetFunction」と「数式埋め込み」があります。

「別シート」を参照する場合は「WorksheetFunction」の方が簡単です。

VBAで「VLookup関数」を使いこなしていきましょう。

では、VBAでVLookup関数を使って「別シート」を参照する方法について、解説していきます。

この記事で紹介すること

  • VBAでVLookup関数を使って「別シート」を参照する方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAコードまとめ

「VLookup関数」で「別シート」を参照するVBAコードについて、まとめています。

VBAコードだけ確認したい場合に、ご活用ください。

'WorksheetFunctionを使う
Worksheets("Sheet1").Cells(2, "A") = WorksheetFunction.VLookup("B", Worksheets("Sheet2").Range("A2:B15"), 2, False) 'VLookup関数で、別シートを参照する

'数式埋め込みを使う
Worksheets("Sheet1").Cells(2, "A") = "=VLOOKUP(""B"",Sheet2!A2:B15,2,FALSE)" 'VLookup関数で別シートを参照

では、解説していきます。

WorksheetFunctionを使ってVLookup関数で別シートを参照する

「WorksheetFunction」を使ってVLookup関数で別シートを参照してみます。

「Worksheets」を指定して別シートを参照する

「Worksheets」を指定して「別シート」を参照します。

VBAコードは、こんな感じです。

「Worksheets」を指定して別シートを参照

Sub TEST1()
    
    'VLookup関数で、別シートを参照する
    Worksheets("Sheet1").Cells(2, "A") = WorksheetFunction.VLookup("B", Worksheets("Sheet2").Range("A2:B15"), 2, False)
    
End Sub

ちょっと長いので、「With」でくくっておきます。

「With」でくくる

Sub TEST2()
    
    '「With」でくくる
    With Worksheets("Sheet2")
        'VLookup関数で別シートを参照
        Worksheets("Sheet1").Cells(2, "A") = WorksheetFunction.VLookup("B", .Range("A2:B15"), 2, False)
    End With
    
End Sub

Withでくくった方が見やすいですね。

では、別シートを用意しておきます。

別シートを用意

別シートを用意

VBAコードを実行してみます。

別シートを参照して検索

別シートを参照して検索

別シートを参照して検索できました。

こんな感じで、別シートを参照する場合は「Worksheets」を使います。

シート番号を使って別シートを参照する

「Worksheets」に「シート番号」入力することで、「別シート」を参照することもできます。

シート番号は、先頭のシートから連番で付けられています。

「シート番号」のイメージ

「シート番号」のイメージ

「シート番号」を使って別シートを参照してみます。

「2番目のシート」の「Sheet2」を参照したいので「Worksheets(2)」とします。

「シート番号」を使って別シートを参照

Sub TEST3()
    
    'シート番号を使う
    With Worksheets(2)
        'VLookup関数で別シートを参照
        Worksheets("Sheet1").Cells(2, "A") = WorksheetFunction.VLookup("B", .Range("A2:B15"), 2, False)
    End With
    
End Sub

では、実行してみます。

「シート番号」を使って別シートを参照

「シート番号」を使って別シートを参照できました。

全シートをループして参照する

「全シート」をループして参照してみます。

先ほどとの「シート番号」を変数にするとできます。

こんな感じです。

全シートをループして参照

Sub TEST4()
    
    'ループして使う
    For i = 2 To 5
        With Worksheets(i)
            'VLookup関数で別シートを参照
            Worksheets("Sheet1").Cells(i, "A") = WorksheetFunction.VLookup("B", .Range("A2:B15"), 2, False)
        End With
    Next
    
End Sub

集計用のシートでSheet1を用意しておきます。

集計用のシートでSheet1を用意

「Sheet2~Sheet5」を用意しておきます。

Sheet2~Sheet5を用意
Sheet2~Sheet5を用意
Sheet2~Sheet5を用意
Sheet2~Sheet5を用意

では、VBAコードを実行してみます。

全シートをループして参照

「全シート」をループして「VLookup関数」を使うことができました。

「シートの数」を取得してループ

「シートの数」を取得してループしてみます。

実務では、シートの数は変わることが多いです。

なので、「シートの数」を「Worksheets.Count」で取得すると便利です。

Sub TEST5()
    
    '「最終シート」までループ
    For i = 2 To Worksheets.Count
        With Worksheets(i)
            'VLookup関数で別シートを参照
            Worksheets("Sheet1").Cells(i, "A") = WorksheetFunction.VLookup("B", .Range("A2:B15"), 2, False)
        End With
    Next
    
End Sub

では、VBAコードを実行してみます。

「シートの数」を取得してループ

「シートの数」を取得してすべてのシートをループできました。

「For Each」を使ってループ

「For Each」を使ってループすることもできます。

「For Each」では、全てのシートをループするので、集計用のシートである「Sheet1」は除外してループします。

Sub TEST6()
    
    i = 1
    '「For Each」でループする
    For Each a In Worksheets
        If a.Name <> "Sheet1" Then '集計するシートではない場合
            i = i + 1 'カウントアップ
            'VLookup関数で検索する
            Worksheets("Sheet1").Cells(i, "A") = WorksheetFunction.VLookup("B", a.Range("A2:B15"), 2, False)
        End If
    Next
    
End Sub

では、VBAコードを実行してみます。

「For Each」を使ってループ

「For Each」を使って全てのシートをループできました。

「WorksheetFunction」を使えば、「VLookup関数」で別シートを自由に参照することができます。

埋め込み数式を使ってVLookup関数で別シートを参照

次は、「埋め込み数式」を使ってVLookup関数で「別シート」を参照してみます。

「別シート」を参照したい場合は「埋め込み数式」では少しやりづらいですね。

でも、方法の1つとして覚えておきましょう。

埋め込み数式で別シートを参照

「埋め込み数式」で別シートを参照してみます。

セルに入力する数式を文字列の形式で入力します。

「別シート」を参照する場合は「Sheet2!」のように「シート名」まで入力します。

Sub TEST7()
    
    With Worksheets("Sheet1")
        'VLookup関数で別シートを参照
        .Cells(2, "A") = "=VLOOKUP(""B"",Sheet2!A2:B15,2,FALSE)"
        .Cells(2, "A").Value = .Cells(2, "A").Value '値に変換
    End With
    
End Sub

検索値の「"B"」は「"」で囲って、「""B""」とするところがポイントです。

今回は値がほしいので最後に値に変換しています。

別シートを用意しておきます。

別シートを用意

別シートを用意

では、VBAコードを実行してみます。

別シートを参照して検索

別シートを参照して検索

「VLookup関数」で「別シート」を参照して検索できました。

セルに数式を入力してコピーして使う

「埋め込み数式」を使う場合は、数式をコピーして使うと簡単です。

数式をコピーして使う

数式をコピーして使う

この数式をコピーして使います。

シート番号を使って別シートを参照する

「シート番号」を使って別シートを参照してみます。

「数式埋め込み」だとシート番号ではなく「シート名」が欲しいので「.Name」を使います。

「シート番号」から「シート名」するイメージ

「シート番号」から「シート名」するイメージ

「シート番号」を使って別シートを参照するVBAコードは、こんな感じになります。

「シート番号」を使って別シートを参照

Sub TEST8()
    
    With Worksheets("Sheet1")
        a = Worksheets(2).Name 'シート名を取得
        'VLookup関数で別シートを参照
        .Cells(2, "A") = "=VLOOKUP(""B""," & a & "!A2:B15,2,FALSE)"
        .Cells(2, "A").Value = .Cells(2, "A").Value '値に変換
    End With
    
End Sub

では、VBAコードを実行してみます。

「シート番号」を使って別シートを参照

「シート番号」を使って別シートを参照できました。

ちょっとややこしいですけど、「数式埋め込み」でも「シート番号」を使って別シートを参照できます。

全シートをループして参照する

「数式埋め込み」を使って、全シートをループして参照してみます。

先ほど使った「シート番号」を変数にしてループします。

全シートをループして参照

Sub TEST9()
    
    With Worksheets("Sheet1")
        'ループする
        For i = 2 To 5
            a = Worksheets(i).Name 'シート名を取得
            'VLookup関数で別シートを参照
            .Cells(i, "A") = "=VLOOKUP(""B""," & a & "!A2:B15,2,FALSE)"
        Next
        .Range("A2:A5").Value = .Range("A2:A5").Value '値に変換
    End With
    
End Sub

集計用のSheet1を用意します。

集計用のシートでSheet1を用意

参照したい別ブックを用意しておきます。

「Sheet2~Sheet5」を用意しました。

Sheet2~Sheet5を用意
Sheet2~Sheet5を用意
Sheet2~Sheet5を用意
Sheet2~Sheet5を用意

では、VBAコードを実行してみます。

全シートをループして参照

「VLookup関数」で全シートをループして参照できました。

「シートの数」を取得してループ

全てのシートをループする場合は、「シートの数」を取得してループします。

先ほどと同じですね。

シートの数は、「Worksheets.Count」を使いまs。

Sub TEST10()
    
    With Worksheets("Sheet1")
        '「最終シート」までループ
        For i = 2 To Worksheets.Count
            a = Worksheets(i).Name 'シート名を取得
            'VLookup関数で別シートを参照
            .Cells(i, "A") = "=VLOOKUP(""B""," & a & "!A2:B15,2,FALSE)"
        Next
        .Range("A2:A5").Value = .Range("A2:A5").Value '値に変換
    End With
    
End Sub

では、VBAコードを実行してみます。

「シートの数」を取得してループ

「シートの数」を取得してすべてのシートをループできました。

「For Each」を使ってループ

もちろん、「For Each」を使ってループすることもできます。

集計用の「Sheet1」は飛ばしてループします。

Sub TEST11()
    
    With Worksheets("Sheet1")
        i = 1
        '「For Each」でループする
        For Each a In Worksheets
            If a.Name <> "Sheet1" Then
                i = i + 1 'カウントアップ
                'VLookup関数で別シートを参照
                .Cells(i, "A") = "=VLOOKUP(""B""," & a.Name & "!A2:B15,2,FALSE)"
            End If
        Next
        .Range("A2:A5").Value = .Range("A2:A5").Value '値に変換
    End With
    
End Sub

では、VBAコードを実行してみます。

「For Each」を使ってループ

「For Each」を使ってループできました。

埋め込み数式だと「別シート」の参照はちょっとややこしいし、あまりメリットもないですね。

「別シート」を参照したい場合は、「埋め込み数式」より「WorksheetFunction」の方が簡単です。

おわりに

この記事では、VBAでVLookup関数を使って「別シート」を参照する方法について、ご紹介しました。

「別シート」を参照するには「Worksheets」を使います。

「VLookup関数」をVBAで使う方法として「WorksheetFunction」と「数式埋め込み」があります。

「別シート」を参照する場合は「WorksheetFunction」の方が簡単です。

VBAで「VLookup関数」を使いこなしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す