[[20251023173449]] 『VBAでのデータ取得』(OBABA) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『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.