【发布时间】:2023-03-15 01:07:01
【问题描述】:
我有一个包含一些数据的工作簿,我想对其进行过滤,然后将过滤后的数据保存到新工作簿中。函数如下所示:
Sub bleh()
For Each i In Number
~~ filter, copy, paste, save ~~
Next i
End Sub
除了优化代码,是不是更快更安全
- 在每次迭代中将每个工作表保存为新工作簿
- 保存当前工作簿中的每个工作表并剪切整个工作簿 最后放入单独的工作簿中?
或者别的什么?
感谢您的意见。
【问题讨论】:
-
出于安全考虑,我不会在保存之前创建 1300 个工作表。另外,我会将各个操作集中到一个单独的子程序中,以便可以对变量进行垃圾收集。例如。 Sub Loop() For i = 1 to 1300 Call DoSave(workbook i) Next i End Sub.
-
quote: ...最后将整个工作簿剪切成单独的工作簿... 这与 ...将每个工作表保存为新工作簿相同... 只是没有保存...只是按逻辑,你已经回答了你自己的问题;)
-
但是要比使用工作表和拆分以及其他任何操作更快:将值推送到变量中 -> 将结果计算为一个长字符串 -> 写入文本文件(另存为 csv);)跨度>
-
@DirkReichel 我明确强调了两个因素 - 速度和安全性。
-
也许如果数据是集中的,您可以创建一个模板(您将复制它 1300 次,然后重命名每个模板),它只使用 SQL 来选择所需的数据。您可以使用特定名称命名每个工作簿,这将转换为 SQL 语句的选择标准。