Excelmacros:循环浏览表格

我有一个有几百个工作表的工作簿,每个工作表都以相同的方式(即拥有相同的列),但是具有不同数量的数据行。

我想循环每个工作表中的每一行,如果某一列(列“L”)的值是一个特定的值(在这种情况下是一个string),我想复制该行到一个新的工作表。 所以最后我有一个大的工作表,每一行都存在于较大的工作簿中,在列“L”中有一个特定的值。

我不想也循环通过工作表复制我的结果; 也许我需要从一个不同的工作簿做到这一点?

提前致谢。

响应:

所以文件和代码是在我的办公室,但是:如果这是在1工作表中,我知道几种方法来通过行,并返回一些或所有相应的领域。 我遇到的麻烦是(a)设置它,以便在不同行数的不同工作表中循环,(b)将其返回到新的工作表,而不写入已经写入的内容。 如果有人使用ADO的解决scheme,这也是受欢迎的,因为它是一个非常大的工作表作为一个整体。 再次感谢,如果我提出大的和未指明的问题,我很抱歉。

由于你的问题是基于文本的要求没有代码的意见,我给你我的意见,并通过这个答案find – 足够公平:)

根据我的意见,

因此,如果您希望从另一本书上searchdata book ,考虑到此BUG ,这将是一个更好的主意:使用ActiveX数据对象(ADO)查询打开的Excel工作表时发生内存泄漏

这样,你就把自己的data book本身当作数据库本身,并从Excel工作表中查询。 即使这样做,您也可能会确保您正在考虑将其作为数据集的每个可search表单都具有相似的结构。 如果你给我们提供了一个样本数据,那么比我们在黑暗中向目标投掷石块要好得多…;)你提到了search行。 你正在search每列一列的行吗? 如果是的话,所有的可search表单都包含这一列吗?

所以对于你想要search/扫描的行,这里是微软必须说的,非常重要的是要注意:

“行扫描: Excel不会为关系数据库提供关于它所包含的数据的详细模式信息, 因此,驱动程序必须扫描至less几行现有数据,以便进行有根据的猜测每列的数据types, “行扫描”的默认值为八(8)行,您可以指定从一(1)到十六(16)行的整数值,或者可以指定零(0)所有现有的行,这是通过将可选的MaxScanRows =设置添加到连接string,或通过更改DSNconfiguration对话框中的行扫描设置来完成的。

但是, 由于ODBC驱动程序中的错误 ,指定行扫描(MaxScanRows)设置当前不起作用。 换句话说,Excel ODBC驱动程序(MDAC 2.1及更高版本)总是扫描指定数据源中的前8行以确定每列的数据types。 “

此外,如果您的可search行具有混合的数据types – >会使您处于极度危险之中。 微软也在谈论这个方面。

  • 参考文章: 如何使用EXCEL ADO

所以在上述过程中可以采取很多预防措施,但是比VBA Binary Search.Find更快。 但是如果你不想采取ADO方法,那么你可以为我们提供一些你可能已经想出的devise。 很高兴能够继续前进。 🙂