1

宏的一部分我刷新了与 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,但没有成功。

任何想法为什么它不起作用?如何解决?

谢谢。

4

2 回答 2

0

最简单的解决方案是让您的公式查看电子表格的更大部分,而不仅仅是 RwlID 命名范围。

"=IF(ISNA(VLOOKUP([@polid],$A$2:$B$2000,2,FALSE)),[@polid],VLOOKUP([@polid],$A$2:$B$2000,2,FALSE))"
于 2013-10-03T13:24:35.480 回答
0

问题是查询仍在刷新时代码仍在继续,因此在搜索数据之前已经执行了 vlookup。修复是禁用后台刷新:数据 -> 连接 -> 属性 -> 取消勾选“启用后台刷新”

于 2015-04-26T13:58:15.367 回答