二次元配列のデータをセルに高速で貼り付ける方法

データをセルに貼り付け、と聞くとすぐに思いつくのは各データをカンマで区切ったCSVファイルです。

ただ、CSVファイルから直接セルに貼り付けようとすると1セルずつ処理することになり、ファイル読み込みを行いながらセルへの貼り付けを行うことの効率の悪さや、1セルずつ処理を行うことでの再描画や再計算が発生することなどにより、処理速度が遅くなる恐れがあります。

そこで、CSVファイルから二次元配列に変換(ファイルをメモリ領域に格納)し、その二次元配列を1セルずつではなく1回で全てのセルに貼り付ける(メモリのデータを1回で貼り付け)、というデータ化と1度でセルに貼り付けの二段階に処理を行うことにします。

CSVファイルから二次元配列への変換方法は「VBAでCSVファイルを二次元配列に格納する」を参照ください。ここではそれ以降の二次元配列を1度にセルに貼り付ける処理方法を紹介します。


二次元配列の全データを1度に対象セル全てに貼り付けるコード

1度に対象セル全てに貼り付けるコードの書き方にはいくつかありますが、セル範囲の開始と終了を指定する方法と、開始セルから貼り付け範囲まで拡張する方法の2つを紹介します。どちらを使っても構いません。

処理速度を測定してもどちらが速いか分からないぐらいの差です。



サンプルコード

二次元配列を用意し、それを1度でセルに貼り付けるサンプルです。上で書いた2通りの書き方のそれぞれで貼り付けを行っています。

なお、貼り付け先のセル範囲を特定するために二次元配列の1次元目と2次元目の要素数を取得しています。二次元配列の要素数の取得方法の詳細は「配列の要素数を取得する(UBound、LBound)」を参照ください。

実行結果(事前にセルの書式を文字列にしています)