宏的一部分我已刷新与SQL的连接(运行查询以在选项卡中放置两列数据)并在由表生成的表中的现有列中执行带有数据(不同选项卡)的vlookup查询。
'Refreshing Connection named Query From Warehouse
ActiveWorkbook.Connections("Query from Warehouse").Refresh
Range("M2").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISNA(VLOOKUP([@polid],RwlID,2,FALSE)),[@polid],VLOOKUP([@polid],RwlID,2,FALSE))"
查询创建的表名为RwlID
我遇到的问题是vlookup仅适用于已经在RwlID中开始的数据。我想也许这种情况正在发生,因为它在连接完成刷新之前正在继续,所以我在宏中的其他查询的任一侧移动了两段代码(这需要花费更长的时间才能运行)但是这没有用。
现在我认为Excel仍然认为RwlID只有一定的长度。因此,例如昨天它是400行,今天延伸到450,我的查找只有400。 (仅在宏中,就像我在宏运行后再次手动输入查找一样,按照我的预期填充单元格)
所以我尝试添加(RlwID在表5中):
sheets(5).ListObjects(1).Name = "RwlID"
认为它可能将450的表重命名为RwlID而不是400,但是没有成功。
任何想法为什么它不起作用?如何解决?
感谢。
答案 0 :(得分:0)
最简单的解决方案是让您的公式查看电子表格的更大部分,而不仅仅是RwlID命名范围。
"=IF(ISNA(VLOOKUP([@polid],$A$2:$B$2000,2,FALSE)),[@polid],VLOOKUP([@polid],$A$2:$B$2000,2,FALSE))"
答案 1 :(得分:0)
问题是在查询仍在刷新时代码仍在继续,因此在搜索数据之前已执行vlookup。修复是禁用后台刷新:数据 - > Connectons - >属性 - >取消勾选'启用后台刷新'