『VBAでのデータ取得』(OBABA)
VBAで動かしたいのですがご教授いただけると助かります。
sheet1のA列(コード)とA1(月)から検索してsheet2の5月の列に
反映したいです。
よろしくお願いします。
sheet1
A B C 1 5月 2 コード 社員名 結果 3 105 E社員 100 4 101 A社員 50 5 106 F社員 20 6 103 C社員 30 7 102 B社員 40 8 104 D社員 120
sheet2
A B C D E 1 コード 社員名 4月 5月 6月 2 101 A社員 3 102 B社員 4 103 C社員 5 104 D社員 6 105 E社員 7 106 F社員
< 使用 Excel:Excel2021、使用 OS:Windows11 >
Sheet2のD2セルに =XLOOKUP(A2:A7&B2:B7,Sheet1!A3:A8&Sheet1!B3:B8,Sheet1!C3:C8,"") と入力すれば終わりですが、VBAが必要ですか?
学習目的ということなら以下。 ワークシート関数を援用するのが簡単でしょう。 参考として、dictionaryを使った別法をメモしておきます。
Sub test()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim dic As Object
Dim k As Long
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Set dic = CreateObject("Scripting.Dictionary")
'dictionaryに対応関係を登録
With ws1
For k = 3 To .Cells(Rows.Count, "A").End(xlUp).Row
dic(.Cells(k, "A") & .Cells(k, "B")) = .Cells(k, "C")
Next
End With
'対応する結果をSheet2に書き込む
With ws2
For k = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
.Cells(k, "D") = dic(.Cells(k, "A") & .Cells(k, "B"))
Next
End With
End Sub
マッチするデータがあるかどうかをExistsメソッドで確認するのが一般的ですが、
この場合は、無い時に""が書き込まれるので省略しても構いません。
(xyz) 2025/10/23(木) 18:27:26
月に応じて列を変えたりするところは、そちらで微修正してください。 (xyz) 2025/10/23(木) 18:28:42
VBAを勉強中なので助かりました。
(OBABA) 2025/10/24(金) 08:39:55
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.