Excel宏:循环遍历行,同时循环显示工作表

时间:2012-12-10 23:51:45

标签: excel excel-vba ado vba

我有一个包含几百个工作表的工作簿,每个工作表都以相同的方式布局(即拥有相同的列),但数据行数不尽相同。

我想遍历每张表中的每一行,如果某列(列“L”)中的值是特定值(在本例中为字符串),我想将该行复制到新工作表。因此,最后我有一个大型工作表,每个行都存在于较大的工作簿中,在“L”列中具有特定的指定值。

我不想循环浏览我正在复制结果的工作表;也许我需要从不同的工作簿中做到这一点?

提前致谢。

响应:

所以文件和代码在我的办公室,但是:如果这是在1个工作表中,我知道几种方法来遍历行并返回部分或全部相应的字段。我遇到的麻烦是(a)将其设置为循环通过不同行数的不同工作表,(b)将其返回到新的工作表而不必写出已经编写的内容。如果某人有使用ADO的解决方案,那么这也是受欢迎的,因为它是一个非常大的工作表。再次感谢,如果我提出大量未提出的问题,我表示歉意。

1 个答案:

答案 0 :(得分:0)

由于你的问题是基于 text 而没有代码请求意见,我通过这个答案给你我的意见和发现 - 足够公平:)

根据我的评论,

因此,如果你想从另一本书中对data book进行搜索,那么鉴于此 BUG: Memory leak occurs when you query an open Excel worksheet by using ActiveX Data Objects (ADO)

,这将是一个更好的主意。

通过这种方式,您可以将data book视为数据库本身并从Excel工作表进行查询。 即使这样做,您也可以确保将您正在考虑作为数据集的每个可搜索工作表具有相似的结构。如果您向我们提供了样本数据,那么它比我们在黑暗中向目标投掷石块要好得多......;) 你提到过搜索行。你在每张纸上搜索一列的行吗?如果是,那么所有可搜索的工作表都包含此列吗?

因此,对于您要搜索/扫描的行,以下是Microsoft必须说的,非常重要的是要注意:

“要扫描的行: Excel不会向ADO提供有关其包含的数据的详细架构信息,因为关系数据库会因此,驱动程序必须扫描至少一些现有数据的行,以便对每列的数据类型进行有根据的猜测。“要扫描的行”的默认值为八(8)行。您可以指定一个整数值(1)到十六(16)行,或者您可以指定零(0)来扫描所有现有行。这可以通过将可选的MaxScanRows =设置添加到连接字符串,或通过更改DSN配置对话框中的Rows to Scan设置来完成

但是,由于ODBC驱动程序中的错误,指定“扫描行”(MaxScanRows)设置当前无效。换句话说,Excel ODBC驱动程序(MDAC 2.1和更高版本)始终扫描指定数据源中的前8行,以确定每个列的数据类型。 “

此外,如果您的可搜索行具有混合数据类型 - >这让你处于危险之中。微软也谈到了这个方面。

因此,您可以采取上述流程采取的许多预防措施,但速度要快于VBA Binary Search.Find。但是,如果您不想采用ADO方法,那么您可以向我们提供您可能想出的一些设计。也乐于向前迈进。 :)