返回列表 上一主題 發帖

[發問] 請問關於跨工作表vlookup的vba語法

[發問] 請問關於跨工作表vlookup的vba語法

  1. Private Sub WORKSHEET_CHANGE()
  2. Dim data As Range
  3. Set data = ['sheet2'!$A$1:$B$10]
  4. [b1] = Application.WorksheetFunction.VLookup([a1], data, 2, 0)
  5. End Sub
複製代碼
以上是我爬論壇的文所寫出來的 想要在sheet1的a1:a10打上編號 則b1:b10參造a1:a10的編碼找尋sheet2的資料
但 卻出現了"無法取得類別 worksheetfanction的vlookup屬性"這訊息

煩請各位大大指教一下 該怎麼修正完善 非常感恩!

需要花時間研究 還是不是很懂 感謝G大的指教~

TOP

感謝O大的回覆 我依照O大所打的 改成
Private Sub WORKSHEET_CHANGE(ByVal Target As Range)
Dim data As Range
Set data = ['sheet2'!$A$1B$10]
[b1] = Application.WorksheetFunction.VLookup([a1], data, 2, 0)
End Sub

可行了
可運作了
但出現了警告標語"堆疊空間不足" 不知道是什麼問題呢
還有 我今天 是用A1 B1
但 我若是想要在A1:A10 ,B1:B10都想要呈現 那 要打10次嗎?
我是非常新的新手..尚在學習 先感謝各位路過的高手的指教

TOP

  1. Private Sub WORKSHEET_CHANGE(ByVal Target As Range)
  2. Dim data As Range
  3. Set data = ['sheet2'!$A$1B$1000]
  4. [b1] = Application.WorksheetFunction.VLookup([a1], data, 2, 0)
  5. End Sub
複製代碼
以上的不能使用...當輸入後電腦變的超級慢 excel整個當掉
不知是否有更好的方式呢 謝謝指教

TOP

感謝O大的指教!
終於止住不運轉了!

不過 當執行此語法後 在B1的部分 就不能手動輸入了
有什麼辦法是可以說依然可以手動輸入呢?
再次麻煩了 非常感謝

TOP

回復 9# GBKEE
再次謝謝G大
不過 當在A輸入值時 B會出現"#N/A" 的情況(因為找不到值)
小弟我很單純的多加一個IF 語法如下:
  1. If [c13:c32] = "#N/A" Then
  2. [c13:c32] = ""
  3.      
  4. End If
複製代碼
恩..我不是很懂的看了我自己寫的也笑了...好像沒那麼單純..
根本無法執行...

再次請教G大了

TOP

回復 11# GBKEE
  1. 非常感謝G大的教導
  2. Option Explicit
  3. Private Sub Worksheet_Change(ByVal Target As Range)
  4.     Dim data As Range
  5.    [color=Red] Dim x As Range
  6.     Dim y As Range[/color]
  7.     Application.EnableEvents = False
  8.     If Target.Address(0, 0) = "[color=Red]B1:B10[/color]" Then Exit Sub
  9.     With Range("[color=Red]B1:B10[/color]")
  10.         If Not .Find(What:="#N/A", LookIn:=xlValues) Is Nothing Then .Cells = ""
  11.     End With
  12.     Set data = ['sheet2'!$A$1:B$1000]
  13.     Y = Application.VLookup(X, data, 2, 0)
  14.     Application.EnableEvents = True
  15. End Sub
複製代碼
測試以上的語法 但 好像還是不行 正在尋思 是否哪裡有衝突

TOP

回復 11# GBKEE
我將檔案上傳了 請G大有空過目一下 謝謝

詢問.rar (13.84 KB)

TOP

哇! 是的 我就是要呈現如此 感謝G大的幫忙!
現在比較不懂的
If Not Intersect(Target, [A1:A10]) Is Nothing Then
Target.Offset(, 1) = IIf(IsError(Y), "", Y)
以上兩段的意思
不知是否能再煩請G大的解惑
抱歉 我知道我煩了點...

TOP

G大 非常謝謝你!
我再多爬一下文 再次感謝您提供的資訊

TOP

        靜思自在 : 靜坐常恩己過、閒談莫論人非。
返回列表 上一主題