[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA:VLOOKUPにて別ブックを参照し最終行までループ(繰り返し)処理する方法』(ゆっきー)
すいません、、、
教えてください。><
VBAにてVlookupで別ブックにある値を貼り付けし、
それを最終行まで処理を行いたいと思っております。
別ブックから参照するまでは出来たのですが、
繰り返し処理に関してうまく起動せず困っております。
お手数おかけしてますが、
お力をお貸し頂けると幸いです。
宜しくお願い致します。
Sub オートフィルとVlookUp()
Dim x As String
Dim ex As New Excel.Application
Dim sPath As String
Dim wb As Workbook
Dim i As Integer
' ループ処理する
For i = 0 To 10
'値を取得
x = Range("Q" & i + 10).Formula
'開くブックを指定
sPath = "C:\Users\ファイル名.csv"
'読み取り専用で開く
Set wb = ex.Workbooks.Open(Filename:=sPath, UpdateLinks:=0, ReadOnly:=True, IgnoreReadOnlyRecommended:=True)
With ActiveSheet
'(1列目)の値を表示
Range("A" & i + 10).Formula = Application.WorksheetFunction.VLookup(x, wb.Worksheets("シート名").Range("A2:E1000"), 5, False)
End With
Next
End Sub
< 使用 Excel:unknown、使用 OS:unknown >
きちんとインデントをつけると以下のとおり。
Sub オートフィルとVlookUp() Dim x As String Dim ex As New Excel.Application Dim sPath As String Dim wb As Workbook Dim i As Integer
For i = 0 To 10 x = Range("Q" & i + 10).Formula sPath = "C:\Users\ファイル名.csv" Set wb = ex.Workbooks.Open(Filename:=sPath, UpdateLinks:=0, ReadOnly:=True, IgnoreReadOnlyRecommended:=True)
With ActiveSheet Range("A" & i + 10).Formula = Application.WorksheetFunction.VLookup(x, wb.Worksheets("シート名").Range("A2:E1000"), 5, False) End With Next End Sub
突っ込みどころは色々ありますが、大きくは2点です。 (1)11行の繰り返しの中で、その都度、ブックを開く必要はない。 最初に一回開くだけでいい。 (2)別のブックを開くと、それがアクティブシートになる。 VLOOKUPの結果を書き込むシートは、 Set ws = ThisWorkbook.Worksheets("Sheet1") などと最初に変数に持ち、これを使えばよいでしょう。
ご自分で修正してみることをお薦めします。
(その他。exは不要。Formulaを使う理由が不明、Valueじゃないか。 VLOOKUPのエラー対応等々。) (γ) 2020/07/21(火) 15:15
こちらで試してみます。
初心者なものですいません。
日々勉強していきます。
(ゆっきー) 2020/07/21(火) 16:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.