標題:
VLOOKUP的問題
[打印本頁]
作者:
sang520
時間:
2011-6-29 15:09
標題:
VLOOKUP的問題
想請問一下如何在使用VBA的VLOOKUP,因為測試了很多但是抓的值都是錯誤,但又不知道哪裡錯誤,有沒有人可以幫我解釋一下
程式碼如下:
Sub V式抓值()
Dim x As Integer
Dim y As String
Dim z As String
1
z = 2
y = Worksheets("Sheet1").Range("A" & z).Value
Range("B2").Value = Application.VLookup(y, Sheet2.[A1:B100], 2)
End Sub
麻煩了!>"<
作者:
oobird
時間:
2011-6-29 16:04
沒下附件,不過看你的代碼,vlookup少了一個參數
Application.VLookup(y, Sheet2.[A1:B100], 2,0)
作者:
sang520
時間:
2011-6-29 20:49
疑~我附件有上傳成功啊!在我發言的最下方,您這邊看不到嗎?
不過我剛剛有修改了一下,將您說的參數放進去,但還是沒辦法ㄋ
在B2的這格還是顯是#N/A,我有用函數去試試看,若出現#N/A不是沒抓到值,
而是最開始的『y』這個值沒有抓到的意思,但是應該是有抓到啊!這個問題我一直很納悶~"~
P.S. 小弟最近才第一次發帖發問,沒經驗若造成您的不便真的很抱歉。
作者:
a8350070
時間:
2011-6-29 20:52
小學生沒法下載附件,不過看看是否這裡出問題先
y = Worksheets("Sheet1").Range("A"
&
z).Value
作者:
oobird
時間:
2011-6-29 22:41
Dim x As Long
Dim y As Long
Dim z As Long
作者:
sang520
時間:
2011-6-30 01:39
哈哈!謝謝a8350070 幫我尋找錯誤,也謝謝oobird的耐心解答,偶經過測試真的抓到值了!
超開心的,但是有個疑問,當宣告時為何不能使用string反而用long才行?那此兩個使用的方式
為何?那Long所代表的意思是什麼呢?能否教導一下,謝謝!
實在感謝以上幫忙我解答的前輩們,謝謝!
作者:
oobird
時間:
2011-6-30 10:22
你把y定義為String
y=值就是字符"100006",而為是數字100006
在表二中只有數字10006,找不到"100006"的字符
所以只能用數字類型
Long所代表的意思是什麼呢,最好是你自己找excel中的說明,才會有印象!
作者:
sang520
時間:
2011-6-30 10:23
本帖最後由 sang520 於 2011-6-30 11:26 編輯
我又遇到問題了!為什麼我把其他檔案的資料複製→貼上值到sheet2這個活頁
!程式碼都沒變,但是又抓不到了!是什麼問題啊????
作者:
Hsieh
時間:
2011-6-30 11:15
VLOOKUP函數必須注意表格內資料型態與搜尋參數資料型態是否相符
也就是說當表格第一欄是數值你的VLOOKUP第一個參數也要是數值
表格第一欄是字串你的VLOOKUP第一個參數也要是字串
作者:
sang520
時間:
2011-6-30 11:34
謝謝!您的解答已經讓我找到答案了!
真的是受益良多!
作者:
sang520
時間:
2011-7-1 10:50
想在請問一下!在函數的時候如果需要判斷是否錯誤的時候會常用
『if』搭配『iserror』去除錯誤的顯示方式,可是在VBA的時候該如
何去除錯呢?
作者:
Hsieh
時間:
2011-7-1 16:14
回復
11#
sang520
If IsError(Application.VLookup(y, Sheet2.[A1:B100], 2, 0)) Then
MsgBox "計算有誤"
Else
Range("B2").Value = Application.VLookup(y, Sheet2.[A1:B100], 2, 0)
End If
作者:
sang520
時間:
2011-7-3 20:18
哈!原來如此,我有嘗試這樣寫
if Application.VLookup(y, Sheet2.[A1:B100], 2, 0))=iserror then
可是錯誤一時也不知該怎麼處理,原來iserror的寫的方式跟函數很像,謝謝指導!
再請教一下application引用的函數中,為什麼不能使用offset呢??
那如果我想抓的直在索引列的左邊,因為vlookup只能往右邊抓值,但是
有時候數據在陣列的左邊,那該怎麼處理啊?
作者:
oobird
時間:
2011-7-3 22:28
建議你別侷限於在VBA中引用工作表函數
效果不好還很費字
VBA有VBA自己的方法
此例用FIND方法就很適合
沒有左右邊的問題
參考一下說明嘗試看看吧!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)