这个问题在这里已经有了答案:
How can I insert variable into formula in VBA
(2 个回答)
2年前关闭。
我正在使用 2 个文件。
两个文件完全相同,但已在不同日期刷新。
该文件在每个工作日刷新,并保存一份与刷新日期一起保存的副本。
在最新文件中,我想比较当前文件中刷新日期前 7 天刷新的文件中的数字。
我将使用 =VLOOKUP() 公式执行此操作。
我在单元格“I1”中有一个公式,其中包含在当前文件前 7 天刷新的文件名。我想在我的 VBA 中使用这个单元格作为引用来从中查找数据。
这是我当前的代码:
' defining the two worksheets
Dim WB1 As Workbook
Dim WB2 As Workbook
' Capture current workbook
Set WB1 = ActiveWorkbook
[CODE TO FILTER PIVOT TABLE OF WB1]
'Open Last week's MS Sales File
Workbooks.Open FileName:="C:\Users\[My Username]\W\X\Y\Z\" & Range("I1") & ".xlsm"
Set WB2 = ActiveWorkbook
WB2.Activate
[CODE TO FILTER PIVOT TABLE OF WB2]
Range("E29").Select
ActiveCell.FormulaR1C1 = "L.W"
Range("F29").Select
ActiveCell.FormulaR1C1 = "Change"
Range("E30").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC[-3],'[WB2]Software'!R30C2:R163C4,3,0),0)"
[MORE CODE to compare values from vlookup]
当我只需输入特定日期的特定文件的文件名时,该代码就可以工作。例如:
"=IFERROR(VLOOKUP(RC[-3],'[BASE NAME_ddmmyy.xlsm]Software'!R30C2:R163C4,3,0),0)"
但是,“ddmmyy”需要根据 WB1 中单元格“I1”中的值进行更新,其中包含 WB1 中日期前 7 天的日期。
错误:
代码停止并向我显示这个^。它会将我带到“文档”文件夹中的文件资源管理器并显示“更新值:WB2”。即使 WB2 已经打开,它也不会打开并激活文件,然后为 vlookup 选择适当的范围。
任何帮助或支持表示赞赏!
最佳答案
Range.Address
Property有一个非常有用的参数,叫做 External
.将此设置为 True
,它将包括工作簿和工作表名称。
我做了一些额外的更改,以便您可以 Avoid Using Select in Excel VBA
Range("E29").Value= "L.W"
Range("F29").Value = "Change"
Dim SourceSheet AS Worksheet
Set SourceSheet = wb2.Worksheets("Software")
Range("E30").FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-3]," & _
SourceSheet.Range(SourceSheet.Cells(30,2), SourceSheet.Cells(163,4)).Address(True, True, xlR1C1, True) & _
",3,0),0)"
关于excel - 使用 VBA,您可以输入一个引用另一个具有动态名称的工作簿的公式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58876458/