標題:
有關Vlookup的用法
[打印本頁]
作者:
bulletin
時間:
2014-2-12 18:38
標題:
有關Vlookup的用法
各位前輩好
使用Vlookup的時候碰到一個問題
資料夾當中有各公司的財報,開啟一個檔案想擷取各公司財報中的部分資訊
[attach]17484[/attach]
程式碼如附檔,我總共試了A~D共4種方法,前兩種可行,後兩種不可行
Private Sub CommandButton1_Click()
Dim StartTime, LastRow
StartTime = Timer
LastRow = Sheets(1).Range("A2").End(xlDown).Row '找出最後一筆資料
Application.ScreenUpdating = False
For i = 2 To LastRow
Dim A
A = Range("A" & i).Value
Workbooks.Open Filename:="C:\Users\KT\Documents\2014_backup\KT\投資理財\Excel分析模組\" & A & "季報.xlsx", UpdateLinks:=False, ReadOnly:=True
'方法A 指定儲存格
Range("E" & i).FormulaR1C1 = "=[" & A & "季報.xlsx]ISQ!R4C2"
'方法B VLookup
Range("E" & i).FormulaR1C1 = "=VLOOKUP(R[-" & i - 1 & "]C,[" & Range("A" & i).Value & "季報.xlsx]ISQ!R1C1:R52C9, 2, FALSE)"
'方法C --> 不可行, 顯示錯誤'1004' 應用程式或物件定義上的錯誤
Range("E2").FormulaR1C1 = _
"=VLOOKUP(R[-1]C,[1101季報.xlsx]ISQ!$A$1:$J$58,2,FALSE)"
'方法D --> 不可行, 編譯錯誤 必須是陳述式的結尾
Range("E" & i).FormulaR1C1 = "=VLOOKUP(Range("E2").value,[" & Range("A" & i).Value & "季報.xlsx]ISQ!R1C1:R52C9, 2, FALSE)"
Windows(A & "季報.xlsx").Close
Next i
Application.ScreenUpdating = True
EndTime = Timer
MsgBox "本次下載共花費:" & EndTime - StartTime & "秒"
End Sub
複製代碼
想請前輩指導為何方法C與D會發生錯誤
謝謝
作者:
stillfish00
時間:
2014-2-12 19:32
本帖最後由 stillfish00 於 2014-2-12 19:49 編輯
回復
1#
bulletin
C :
是因為儲存格的位置可以有兩種表示方法,一種是常見的A1樣式,一種是R1C1樣式
使用FormulaR1C1指定公式時需要用R1C1樣式
使用Formula指定公式 才是用A1樣式
錯在 Range("E2").FormulaR1C1 = "=VLOOKUP(R[-1]C,[1101季報.xlsx]ISQ!
$A$1:$J$58
,2,FALSE)"
D :
你沒弄懂字串,你要的應該是這樣吧...
"=VLOOKUP("""
&
Range("E2").value
&
""",["
&
Range("A" & i).Value
&
"季報.xlsx]ISQ!R1C1:R52C9, 2, FALSE)"
藍色是文字字串,代表的是雙引號內的文字,文字字串內的雙引號要用兩個雙引號代替
綠色是VBA的語法,取回儲存格內容
然後用 & 把各個部分結合起來成為一個字串
作者:
bulletin
時間:
2014-2-12 23:41
回復
2#
stillfish00
多謝您的指教
學到很多啊!!
果然可以使用了
謝謝!!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)