VBA中如何将工作簿变量嵌入VLOOKUP公式以适配文件名变更?
解决VBA中VLOOKUP公式嵌入变量的问题
你的问题出在字符串拼接方式错误:直接把变量写在字符串引号内,VBA会将path和mainwb当作普通文本处理,不会解析成变量存储的路径和文件名。
正确的代码写法
Dim path As String Dim mainwb As String path = Application.ActiveWorkbook.Path & "\" mainwb = ActiveWorkbook.Name ' 用&运算符拼接固定字符串与变量,生成正确的公式 Range("I2").FormulaR1C1 = _ "=VLOOKUP(RC[-1],'" & path & "[" & mainwb & "]Account Mapping'!C3,1,0)"
原理说明
通过&将固定公式片段、变量拼接在一起:
'" & path & "[" & mainwb & "]Account Mapping'!C3会被VBA解析为实际的文件引用,比如当path为C:\Finance\、mainwb为Cash.xlsm时,最终生成的公式部分是'C:\Finance\[Cash.xlsm]Account Mapping'!C3,和你最初的固定公式格式完全匹配,但实现了动态引用文件名和路径。
如果当前文件就是数据源所在工作簿,也可以省略路径部分,简化为:
Range("I2").FormulaR1C1 = _ "=VLOOKUP(RC[-1],'[" & mainwb & "]Account Mapping'!C3,1,0)"
内容的提问来源于stack exchange,提问作者qxphm
相关产品推荐
相关产品推荐

