2012-12-10 106 views
2

我有一个工作簿,其中有几百个工作表,每个工作表都以相同的方式(即拥有相同的列)进行布局,但是具有不同数量的数据行。我想循环在每张表中的每一行,如果某列(列“L”)中的值是一个特定的值(在这种情况下是一个字符串),我想复制该行到一个新的工作表。所以最后我有一个大的工作表,每一行都存在于较大的工作簿中,在列“L”中有一个特定的值。Excel宏:循环遍历页面时通过行循环

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

在此先感谢。

响应:

所以文件和代码是在我的办公室,而是:如果这是在1个工作,我知道几个方面去通过行和返回的部分或全部的相应字段。我遇到的麻烦是(a)设置它以便在不同的行计数的不同工作表中循环,(b)将它返回到新的工作表而不写入已经写入的内容。如果有人使用ADO的解决方案,那也是受欢迎的,因为它是一个非常大的工作表。再次感谢,如果我询问大量未指明的问题,我很抱歉。

+3

到目前为止您尝试过什么?代码中有没有特别的地方可以解决问题? –

+0

+1 @Kevin。是的,请告诉我们你已经试过的代码以及你被卡住的地方。我们可以以这种方式更轻松地帮助你...如果你真的不知道。谷歌“Excel VBA循环工作表”,还可以查看'.Find'和'.AutoFilter'方法。那是一个很好的开始。 –

+0

如果你不想要不需要不同的工作簿。在骑车期间测试并跳过“新”工作表将很容易。 –

回答

0

因为你的问题是相当基础文本询问意见没有代码,我给你我的意见,并通过这个答案找到 - 足够公平:)

按我的意见,

所以,如果你想从另一本书做data book搜索,这将是给这个BUG: Memory leak occurs when you query an open Excel worksheet by using ActiveX Data Objects (ADO)

在这样一个更好的主意,你把你的data book作为数据库本身和q从Excel工作表。 即使这样做,您也可能需要确保您考虑作为数据集的每个可搜索表单都具有相似的结构。如果你给我们提供了一个样本数据,那么它比我们在黑暗中向目标投掷石块要好得多...;) 你提到过关于搜索行。您是否在每张纸上搜索一列的行?如果是这样,所有可搜索的表单都包含此列吗?

所以对于要搜索/扫描行,这里是微软不得不说,很重要的是要注意:

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

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

此外,如果您的搜索行具有混合数据类型 - >你置身于极大的危险微软还谈到了这方面太

因此,在上述过程中您可能会采取许多预防措施,但速度比VBA Binary Search.Find快,但如果您不想采用ADO方法,则您可以ñ提供给我们一些你可能想出的设计。很高兴在这方面继续前进。 :)