【发布时间】:2017-03-21 00:22:38
【问题描述】:
编辑:我只有 28,000 列,你们都说对了,它们不能全部放在一个工作表中。我只用部分数据测试我的代码,还没有意识到它并不适合
我有 28,000 列数据。我正在尝试复制特定的列 5,12,19,26...(即对于 i=1:4000,列号 = 7*(i-1) + 5)。我最初的想法如下,但问题是在循环的每次迭代之后,前一列被取消选择。所以下面的代码不会复制预期的数据。
For i = 1 To 4000
DataSheet.Columns(7 * (i - 1) + 5).Select
Next i
Selection.Copy
ResultsSheet.Paste
我考虑过下面的替代方案(可行,但速度很慢),但我希望我可以编写一些执行速度更快的东西(部分问题是代码选择目标工作表并单独粘贴每一列,基本上翻了两番步骤数类似于第一个解决方案)。
For i = 1 To nSymbols
DataSheet.Columns(7 * (i - 1) + 5).Copy
ResultsSheet.Select
Columns(i+1).Select
ActiveSheet.Paste
Next i
关于如何使这段代码运行(更快)的任何想法?
【问题讨论】:
-
请提供您正在使用的 Excel 版本。我的 Excel 2016 每个工作表只有 16,384 列,而不是“32,000 列数据”或其他任何内容。
标签: excel vba for-loop multiple-columns execution-time