• ベストアンサー

VBA 2次元配列のセル出力

2次元配列に格納されているデータをセルに出力したいのですが、90000行もあるデータを扱っているので、ループでまわすととても遅いです。 早く出力できるテクニックがあれば、教えていただけないでしょうか? 素人質問で申し訳ありませんが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

ANo.2です。 90000行も扱うので、てっきり2007以降だと思っていました。 90000行のデータを配列に入れる際に60000行の配列と30000行の配列に分けて入れる様にしてはいかがでしょう。 それが難しいなら、90000行の2次元配列から60000行と30000行の2次元配列を作って貼り付ける。2次元配列を分割するにはループを回して作るしかなさそうですが……。

その他の回答 (2)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

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

1192296jp
質問者

補足

回答ありがとうございます。 質問の内容が足りなくて申し訳ありません。 条件としてExcel2003を使っており、90,000件のデータを扱っております。 なのでセル範囲で指定すると、1シートの上限(6万いくつか)を超えてしまいます。 私の理解だとセル範囲と2次元配列の内容が一致していないとダメだと思っています。 ですので、1つのシートにループで上限を60,000として出力し、それを超える場合は違うシートに出力するようにしています。 例えば、セル範囲で出力する際に、2次元配列の範囲も指定できるとかいう方法はあるのでしょうか?

  • imo8001
  • ベストアンサー率14% (26/179)
回答No.1

そのような質問をする場合は コードを書くのが基本だと思います ちなみに ワタシの場合は メモリー節約のために 2次元にはせず 1次元の吸い上げ吐き出しをカウントアップして繰り返すのが 多いですね 速度は比較したことがないのでなんともいえませんが メモリー消費を抑えることができるので もし 他で多くのメモリーを占有していた場合などは HDDへアクセスすることになるだろうから それを考えれば早い・・かも???

1192296jp
質問者

お礼

ありがとうございました。

関連するQ&A

専門家に質問してみよう