我正在为excel中的表单控件按钮构建一个名为Update的简单宏。当按下按钮时,我希望在按钮的表格中执行vlookup
(名为“Checker”),在另一张名为同一工作簿中的“所有帐户日志”。
此vlookup公式应填充在 Checker 的第5列(“E”)的第5-105行中,并且对于每个相应的行,应从B列输入以检查 All帐户记录的范围。这是我到目前为止的代码:
Sub Update()
Dim Month As String
Dim i As Integer
Month = Cells(2, 2).Value
For i = 5 To 105
Cells(i, 5).Value = "=IFERROR(VLOOKUP($B" & i & ",'All Account Log'!$B$7:$E$1048576,4,0)," & Month & ")"
Next i
End Sub
如果vlookup成功,则列E的每一行中的公式应该拉回相应列的数据。如果vlookup找不到匹配项,则公式应该复制Cell(2,2)中的值,该值是用户输入的字符串 - 一个月的名称。当我运行宏时,vlookup会执行我想要的操作,但是,当它找不到匹配项时,生成的公式显示为“#NAME?”。我该怎么做才能解决这个问题?我觉得我的公式如何引用Month变量(Cell(2,2)的值)有一些语法问题,但我无法弄清楚错误是什么。
运行宏并用#NAME点击其中一个单元格后?结果,公式栏中的公式为: = IFERROR(VLOOKUP($ B5,'所有账户记录'!$ B $ 7:$ E $ 1048576,4,0),Jan)
这里我输入“Jan”作为月份名称,所以我希望结果是“Jan”而不是“#NAME?”感谢您的想法!
答案 0 :(得分:2)
你真的想要:
=IFERROR(VLOOKUP($B5,'All Account Log'!$B$7:$E$1048576,4,0),"Jan")
而不是:
=IFERROR(VLOOKUP($B5,'All Account Log'!$B$7:$E$1048576,4,0),Jan)
所以使用:
Month = """" & Cells(2, 2).Value & """"
在VBA代码中。