- ベストアンサー
Excel VLOOKUPをVBAでやりたいのですが、分からなくて困っ
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 一例です。 '========Sheet1のシートモジュールに記述してください======================== Private Sub Worksheet_Activate() Dim Ws1 As Worksheet, Ws2 As Worksheet Dim myRng1 As Range, myRng2 As Range, c As Range Set Ws1 = Worksheets("Sheet1") Set Ws2 = Worksheets("Sheet2") Set myRng1 = Ws1.Range("A2", Ws1.Cells(Rows.Count, "A").End(xlUp)) Set myRng2 = Ws2.Range("F2", Ws2.Cells(Rows.Count, "I").End(xlUp)) For Each c In myRng1 c.Offset(, 2).Value = Application.WorksheetFunction.VLookup(c.Value, myRng2, 4, False) c.Offset(, 3).Value = c.Offset(, 1).Value - c.Offset(, 2).Value Next c Set Ws1 = Nothing Set Ws2 = Nothing Set myRng1 = Nothing Set myRng2 = Nothing End Sub
その他の回答 (2)
- hige_082
- ベストアンサー率50% (379/747)
Sheet2のI列のデータは100行までとしているので 適宜変更してください Sub Macro1() Range("C2", "d" & Cells(Rows.Count, 1).End(xlUp).Row).Formula = Evaluate("{""=VLOOKUP(A2,Sheet2!$F$2:$I$100,4,FALSE)"", ""=B2-C2""}") End Sub
お礼
内容的には、OKです ですが、関数をexcel Sheetに張り付ける事は、VBAでなくともコピーして張り付ければ一緒です。 でもこんな風にできるのは、勉強になりました。 ありがとうございます。
- imogasi
- ベストアンサー率27% (4737/17069)
実例でも1例挙げて質問のこと >Sheet1のC列2行目行こうにSheet2のI列のデータを取得し (A列にデーターが入っている分、(時と場合により表示数が違う為)) や >Sheet1のD列2行目以降にB-Cの差し引きをおこなう など易しくて質問するまでも無かろう。質問のメイン主題の中に異質なものを混ぜないこと。 VLOOKUPの参照表の行数、およびデータ数が決った数でなく、変動してわからないなら データ例 F1:G3 参照表 G列 H列 1 名古屋 2 横浜 3 千葉 ーーー データ A1:B4 A列 B列(実行結果) 1 名古屋 3 千葉 2 横浜 1 名古屋 ーーー 標準モジュールに Sub test01() d1 = Range("G65536").End(xlUp).Row d2 = Range("A65536").End(xlUp).Row For i = 2 To d2 Cells(i, "B") = Application.WorksheetFunction.VLookup(Cells(i, "A"), Range("G1:H" & d1), 2, False) Next End Sub >分からなくて困ってます ここが何か(どういう事項か自己分析して)、はっきり書けるように勉強のこと。
お礼
確かに説明が足りませんでしたすみません これから気をつけたいと思います。 ありがとうございました。
お礼
私のやりたかった事が出来ました。 ありがとうございます。 まだまだ勉強不足ですのでこれから勉強していきたいと思います。 本当にありがとうございました。 また、回答お願いいたします。