连接string生成的表上的VBA查找

部分macros我刷新了连接到SQL(这是运行查询将两列数据在选项卡中),并在查询生成的表上的现有列中的数据(不同的选项卡)进行查找。

'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))" 

查询创build的表名为RwlID

我遇到的问题是,vlookup仅适用于已经在RwlID中的数据开始。 我想也许这是因为在连接完成刷新之前它正在发生,所以我移动了macros中的其他查询的两端代码(这需要更长的时间运行),但没有帮助。

现在我想Excel仍然认为RwlID只有一定的长度。 因此,例如,昨天是400行,今天延伸到450,我的查找只有400.(仅在macros中,因为当我运行macros后,我再次手动input查找单元格填充,如我所料)

所以我尝试添加(RlwID在表5中):

  sheets(5).ListObjects(1).Name = "RwlID" 

认为它可能会将450的表格重新命名为RwID而不是400,但是并不成功。

任何想法,为什么它不工作? 如何解决它?

谢谢。

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

 "=IF(ISNA(VLOOKUP([@polid],$A$2:$B$2000,2,FALSE)),[@polid],VLOOKUP([@polid],$A$2:$B$2000,2,FALSE))" 

问题在于查询仍在刷新时代码仍在继续,因此在查找数据之前已经执行了查找操作。 修复是禁用后台刷新:数据 – > Connectons – >属性 – >不勾选'启用后台刷新'