複数のワークブックから特定のワークシートをマージするプログラムがあります。このプログラムでは、約 300 のワークブックを処理し、統合されたワークブックを作成する必要があります。統合されたワークブックでは、他のワークブックからコピーした各行にさらにいくつかのデータ ポイントを追加する必要があります。ターゲット ワークブックの行数は、おそらく 100,000 前後です。
名前、国、通貨など、他の列として追加する必要がある顧客に関連する他の多くのデータを含む別の XL があります。
1 つのワークブックには、1 人の顧客からのデータのみが含まれます。したがって、1 つのワークブックからコピーされたデータの場合、これらすべての列のデータは基本的に同じになります。
現在、各ワークシートからデータを貼り付ける際に、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
もう 1 つの方法は、すべてのワークシートからすべてのデータを貼り付けてから、顧客データのルックアップを行うことです。ここでの利点は、顧客のデータが複数のファイルに存在する可能性があるため、複数のルックアップを回避することである程度の効率が得られることです。また、顧客マスターデータファイルは一度だけ開く必要があります。
私が取ったアプローチが正しいかどうか、そして私にできる改善点があるかどうかを知りたい.
具体的には、次の質問があります。
- 各ソース ファイルを開かないようにする方法はありますか?
- ソース ワークブックのすべてのデータをメモリ内の配列に追加し、一度ターゲット ワークブックにコピーする方がよいでしょうか?
- 配列アプローチを使用する場合、貼り付ける前に配列にルックアップを追加する必要がありますか、それとも宛先範囲のデータを貼り付けた後に行う必要がありますか?