簡體   English   中英

使用VBA與動態lookup_value的vlookup?

[英]vlookup with dynamic lookup_value using VBA?

我是使用動態查找值的新手,我嘗試遵循如何使用VBA與動態lookup_value一起執行excel vlookup的建議。 從另一個工作簿動態獲取值。

下面的代碼拋出#Name? 錯誤。

請求您的幫助以解決該錯誤。

代碼摘錄

Dim ws As Worksheet
Dim dynamic_lookup_value As Range
Dim LocationRef As Range

Set ws = ActiveWorkbook.Worksheets("XYZ")

Set dynamic_lookup_value = ws.Cells(2, 1)

ActiveWorkbook.Names.Add Name:="dynamic_lookup_value", RefersTo:=Worksheets("XYZ").Cells(2, 1)

Set LocationRef = ws.Cells(2, ActiveColumn)

ActiveCell.FormulaR1C1 = _
    "=IFERROR(VLOOKUP(" & dynamic_lookup_value.Address(0, 0) & ",'[ABC.xlsx]XYZ'!C1:C26,MATCH(""Location Description"",'[ABC.xlsx]XYZ'!R1C1:R1C26,0),)," & LocationRef.Address(0, 0) & ")"

執行后,公式顯示為

=IFERROR(VLOOKUP('A2','[HC report.xlsx]HC Report'!$A:$Z,MATCH("Location Description",'[HC report.xlsx]HC Report'!$A$1:$Z$1,0),),'G2')

請注意,查找值顯示為“ A2”(帶單個代碼)。 試圖使用以下代碼來聲明dynamic_lookup_value ,但徒勞無功。

ActiveWorkbook.Names.Add Name:="dynamic_lookup_value", RefersTo:=Worksheets("XYZ").Cells(2, 1)

如果我在A2和G2之前和之后手動刪除Singe代碼,則該公式可以正常工作。

要求專家建議解決此問題。

非常感謝,Prabhu

新的答案:能夠復制您的錯誤,我想我有一個解決方案:用ActiveCell.FormulaR1C1替換您的ActiveCell.Formula 這通過我對問題的簡單重新創建(使用即時窗口)解決了

這有效(根據單元格A1的地址設置對單元格A2中單元格A1的引用: Cells(2,2).Formula = "="&Cells(1,1).Address(0,0)

雖然這不起作用(單引號中的'A1'與您遇到的問題相同): Cells(2,2).FormulaR1C1 = "="&Cells(1,1).Address(0,0)

我認為VBA中的命名范圍和范圍變量之間可能會有一些混淆。 但是,公式中的一個問題是應用程序或RC表示法不一致,因此您需要

ActiveCell.FormulaR1C1 = _
    "=IFERROR(VLOOKUP(" & dynamic_lookup_value.Address(0, 0, xlR1C1) & ",XYZ!C1:C26,MATCH(""Location Description"",XYZ!R1C1:R1C26,0),)," & LocationRef.Address(0, 0, xlR1C1) & ")"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM