- ベストアンサー
VBA 2次元配列のセル出力
2次元配列に格納されているデータをセルに出力したいのですが、90000行もあるデータを扱っているので、ループでまわすととても遅いです。 早く出力できるテクニックがあれば、教えていただけないでしょうか? 素人質問で申し訳ありませんが、よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ANo.2です。 90000行も扱うので、てっきり2007以降だと思っていました。 90000行のデータを配列に入れる際に60000行の配列と30000行の配列に分けて入れる様にしてはいかがでしょう。 それが難しいなら、90000行の2次元配列から60000行と30000行の2次元配列を作って貼り付ける。2次元配列を分割するにはループを回して作るしかなさそうですが……。
その他の回答 (2)
- mt2008
- ベストアンサー率52% (885/1701)
2次元配列をそのまま貼り付けたいのであれば、そのままセル範囲に値を入れれば良いかと。わざわざループを回す必要有りません。 Sub Sample() Dim nTest(29999, 9) As Long For i = 0 To 29999 For j = 0 To 9 nTest(i, j) = Int(Rnd() * 100) Next j Next i 'ここで2次元配列をセル範囲に Range("A1:J30000").Value = nTest End Sub
- imo8001
- ベストアンサー率14% (26/179)
そのような質問をする場合は コードを書くのが基本だと思います ちなみに ワタシの場合は メモリー節約のために 2次元にはせず 1次元の吸い上げ吐き出しをカウントアップして繰り返すのが 多いですね 速度は比較したことがないのでなんともいえませんが メモリー消費を抑えることができるので もし 他で多くのメモリーを占有していた場合などは HDDへアクセスすることになるだろうから それを考えれば早い・・かも???
お礼
ありがとうございました。
補足
回答ありがとうございます。 質問の内容が足りなくて申し訳ありません。 条件としてExcel2003を使っており、90,000件のデータを扱っております。 なのでセル範囲で指定すると、1シートの上限(6万いくつか)を超えてしまいます。 私の理解だとセル範囲と2次元配列の内容が一致していないとダメだと思っています。 ですので、1つのシートにループで上限を60,000として出力し、それを超える場合は違うシートに出力するようにしています。 例えば、セル範囲で出力する際に、2次元配列の範囲も指定できるとかいう方法はあるのでしょうか?