我在VBA中遇到了VLOOKUP的问题。这是我正在使用的代码示例:
Sub Macro15()
'
' Macro15 Macro
Dim LR As Long
LR = Cells(Rows.Count, "A").End(xlUp).Row
Range("B1:B" & LR).FormulaR1C1 = _
"=VLOOKUP(RC[-1],'https://internal_sharepoint_address
/[Vendor_Information.xlsx]Sheet1'!R3C3:R150C18,4,FALSE)"
Range("C1:C" & LR).FormulaR1C1 = _
"=VLOOKUP(RC[-2],'https://internal_sharepoint_address
/[Vendor_Information.xlsx]Sheet1'!R3C3:R150C18,5,FALSE)"
With Range("B1:C" & LR)
.Value = .Value
End With
End Sub
问题在于列B和B中的值。 C(VLOOKUP公式)返回值#N / A.
但是,如果我在将公式转换为值(“带范围(”B1:C“& LR)”行)之前停止代码,则VLOOKUP公式将返回正确的值。
也很奇怪 - 如果我清除B列和B列的内容C并重新运行上面的代码,值返回正常。但是,如果我尝试向VBA添加第二个循环,则它不起作用。
任何人都可以提供的任何智慧都将是一个巨大的帮助。我已经坚持了很长一段时间,我只是在我的智慧结束。
谢谢大家, 大卫
答案 0 :(得分:1)
在尝试替换值之前,您可能需要添加一个运行计算周期的步骤:
Application.Calculate
从评论编辑:我认为从Sharepoint网站上的链接工作簿中检索查找数据需要一段时间。也许添加一些延迟循环?你可以制作两个单独的宏(一个以公式结尾,第二个从粘贴值开始),然后单独运行它们之间的暂停吗?