性能问题 运行 Excel 中跨两个来自外部数据源的表的宏

Performance issue running a macro in Excel across two tables from external data sources

在一张工作表上,我有两个表,它们由两个不同的外部源填充,一个来自 db2,另一个来自 SQL 服务器。刷新表中的数据后,我触发一个宏,该宏运行 VBA 循环遍历两个表中的单元格并应用业务规则的代码。

在本地测试它按预期工作并且宏在几秒钟内完成。当我将连接更改为指向网络上的 db2 和 SQL 服务器数据库时,它会及时刷新数据,但是当我触发宏时,它需要大约。 30分钟完成。仅更改了连接,我使用相同的工作簿进行所有测试。

首先想到的是它现在正在从网络中提取数据并且它可能是连接性的,但是它刷新数据正常并且它只是运行缓慢的宏并且VBA代码不使用连接并且只是一个基本的 for 循环。

我不知道是什么原因造成的,想知道以前是否有人遇到过这种行为并且知道我该如何解决它?

我想我找到了问题所在。

有人更改了在一个数据库中填充 table 的视图,以使用 LEFT 函数将工作表中的数字转换为字符串。所以看起来将一个 table 中的字符串与另一个 table 中的数字进行比较会导致性能问题。

很惊讶它导致它变慢了这么多,但将它转换回整数使其再次正常工作。

感谢您的帮助