由于您的问题是基于文本询问没有代码的意见,所以我给您我的意见并通过这个答案找到 - 很公平:)
根据我的评论,
因此,如果您想从另一本书中进行搜索,考虑到此BUG:内存泄漏发生在您使用 ActiveX 数据对象 (ADO) 查询打开的 Excel 工作表时会发生data book
更好的主意
通过这种方式,您将自己data book
视为数据库并从 Excel 表中查询。即使这样做,您也可能希望确保您考虑作为数据集的每个可搜索工作表都具有相似的结构。如果您向我们提供了示例数据,那么这比我们在黑暗中不断向目标投掷石头要好得多... ;) 您提到了搜索行。您是否在每张纸上搜索一列的行?如果是这样,您的所有可搜索工作表都包含此列吗?
因此,对于您要搜索/扫描的行,这是 Microsoft 必须说的,非常需要注意:
“要扫描的行数:Excel 不会像关系数据库那样为 ADO 提供有关其包含的数据的详细架构信息。因此,驱动程序必须扫描至少几行现有数据,以便做出有根据的猜测每列的数据类型。 “要扫描的行”的默认值为八 (8) 行。您可以指定从一 (1) 到十六 (16) 行的整数值,也可以指定零 (0) 进行扫描所有现有行。这是通过将可选的 MaxScanRows= 设置添加到连接字符串,或通过更改 DSN 配置对话框中的 Rows to Scan 设置来完成的。
但是,由于 ODBC 驱动程序中的错误,指定要扫描的行 (MaxScanRows) 设置目前无效。换句话说,Excel ODBC 驱动程序(MDAC 2.1 和更高版本)总是扫描指定数据源中的前 8 行以确定每一列的数据类型。"
此外,如果您的可搜索行具有混合数据类型--> 这会使您处于极大的危险之中。微软也谈到了这方面。
因此,您可以在上述过程中采取许多预防措施,但它比 aVBA Binary Search
和 a更快.Find
。但是,如果您不想采取ADO
措施,那么您可以为我们提供一些您可能想出的设计。很高兴能在这方面继续前进。:)