[[20170328145354]] 『配列への格納について』(まー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『配列への格納について』(まー)

 教えてください。
 4万行100列ほどのデータが2つ(シート1、シート2)ありこれを配列に
 格納したいのです。1行づつ追加していけばいいのですが時間がかかるので
 rangeオブジェクトをつかっていっきにほうりこみたいのです。

 sub test ()
 Dim rngN as range
 Dim vv
 Dim ws as worksheet

 for each ws in thisworkbook.worksheets
     set rngN = Intersect(ws.UsedRange, ws.Range("2:" & Rows.Count))
     vv=rngN.value
 next
 end sub

 とすると当たり前ながら先に格納したシート1のデータがシート2のデータに上書きされてしまします。
 どのようにすればよいかご教授ください。

< 使用 Excel:Excel2013、使用 OS:Windows8 >


 シートが2つと決まっているのでしたら、Rangeも2つ作れば良いのではないですか?

 sub test ()
 Dim rngN as range
 Dim rngS as range
 Dim vv
 Dim ws as worksheet
 dim ws2 as worksheet
     set ws = worksheets(1)
     set ws2 = worksheets(2)
     set rngN = Intersect(ws.UsedRange, ws.Range("2:" & Rows.Count))
     set rngS = Intersect(ws2.UsedRange, ws2.Range("2:" & Rows.Count))
     vv=rngN.value
 end sub

 やっつけですが。
(2Win) 2017/03/28(火) 15:34

 ざっくりと、2行目以降の使用セルのセル範囲をrngNに設定してますが、 
 配列処理したいなら、それぞれのシートで、何列まであるデータなのかを、
 どこかの行で判定した方が、あとあと、処理しやすいのでは?
 

(マリオ) 2017/03/28(火) 15:45


 2シート分の配列を「一つの配列」に格納したい、と言う質問だと思ったんですけど・・・

 > 1行づつ追加していけばいいのですが時間がかかるので

 本当なんですかねぇ・・・

 2つの配列内、広い方の配列は、取りあえず全データ分の広さで格納し、
 狭い方の配列の値を書き足せば、そんなに時間が掛かるとも思えないのですが。

(半平太) 2017/03/28(火) 17:35


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.