我现在有一个程序可以合并来自多个工作簿的特定工作表。该程序必须处理大约 300 个工作簿并创建一个合并的工作簿。在合并的工作簿中,我必须向从其他工作簿复制的每一行添加更多数据点。目标工作簿中的行数可能约为 100,000。
我有另一个 XL,其中包含与客户相关的许多其他数据,如姓名、国家、货币等,我必须将其添加为其他列。
一个工作簿仅包含来自一位客户的数据。因此,对于从一个工作簿复制的数据,所有这些列的数据将基本相同。
现在,我正在考虑打开 customerData 工作簿并根据 customerID 有选择地复制数据,然后在粘贴每个工作表中的数据时将其粘贴到目标工作簿中。
现在代码将如下所示:
For each workbook in the source Folder
Open source workbook
Copy the range from worksheet1
Copy the customerID from worksheet2
Open target workbook
Paste range from source.worksheet1 in the target worksheet
Fill the range in the target worksheet with the first column as customerID
Open workbook with customer master data
Copy data based on customerID
Paste in the target worksheet using fill range
另一种方法是完成粘贴所有工作表中的所有数据,然后查找客户数据 - 这里的优点是可以在多个文件中为客户提供数据,因此在避免多次查找方面有一定的效率。客户主数据文件只需打开一次。
我想知道我采取的方法是否正确,是否有任何改进可以做到。
具体来说,我有以下问题:
- 有没有办法避免打开每个源文件?
- 将源工作簿中的所有数据添加到内存中的数组并将其复制一次到目标工作簿中是否更好?
- 如果我使用数组方法,我应该在粘贴之前将查找添加到数组中,还是应该在将数据粘贴到目标范围内之后执行?