目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
13 / 277 ←次へ | 前へ→

【286】二次元配列の合体
Excel  Jaka  - 17/9/1(金) 22:46 -

引用なし
パスワード
   使用頻度はほとんど無いと思うけど、なんとなく勉強のために。
なんかやたら、メモリ喰いそうだし。
シートに貼り付けて合体させた方が速そう。

エクセル関数を使っているので要素数の上限問題が…。
Excel2000だと、Transposeできる配列の要素数は、5461個(1〜5461)まで。
つまり、Excel2000だと2つの配列の総素数の合計が、5461個までしかまともに動かないと思う。

10カラム(10列)づつだったら、合計546行ぐらいか。
しょぼい。
見本(下記コードで作った)以外のデータでは試していません。

尚、メインのThinkpad A31(Win2000 & Excel2000)のバッテリーが逝かれて、
起動するとバイオス画面が出てくるようになったので、
下記コードは、Win7 & Excel2007 で書きました。


Sub 二次元配列合体()
 Dim TBL_1(1 To 4, 1 To 4)
 Dim TBL_2(1 To 3, 1 To 4)

 Range("A1:E20").Value = Empty

 '二次元配列に値を代入(ショボイデータ作成)
 TBL_1(1, 1) = 11: TBL_1(1, 2) = 12: TBL_1(1, 3) = 13: TBL_1(1, 4) = 14
 TBL_1(2, 1) = 21: TBL_1(2, 2) = 22: TBL_1(2, 3) = 23: TBL_1(2, 4) = 24
 TBL_1(3, 1) = 31: TBL_1(3, 2) = 32: TBL_1(3, 3) = 33: TBL_1(3, 4) = 34
 TBL_1(4, 1) = 41: TBL_1(4, 2) = 42: TBL_1(4, 3) = 43: TBL_1(4, 4) = 44
 Range("A1:D4").Value = TBL_1

 TBL_2(1, 1) = "A1": TBL_2(1, 2) = "B1": TBL_2(1, 3) = "C1": TBL_2(1, 4) = "D1"
 TBL_2(2, 1) = "A2": TBL_2(2, 2) = "B2": TBL_2(2, 3) = "C2": TBL_2(2, 4) = "D2"
 TBL_2(3, 1) = "A3": TBL_2(3, 2) = "B3": TBL_2(3, 3) = "C3": TBL_2(3, 4) = "D3"
 Range("A6:D8").Value = TBL_2

 MsgBox "シートに書いた2つの配列を合体します。"

 '列数分の配列を作り、二次元配列から1列づつ一次元配列に変換した配列を収めていく。
 '二次元配列から1列転記した場合、二次元配列になっていたので。

 Dim tbb(1 To 4)
 Dim NewTB()

 For i = 1 To UBound(tbb)
   tbb(i) = Split(Join(Application.Transpose(Application.Index(TBL_1, 0, i))) & " " & _
          Join(Application.Transpose(Application.Index(TBL_2, 0, i))))
 Next

 NewTB = Application.Transpose(tbb)
 行 = UBound(NewTB, 1)
 列 = UBound(NewTB, 2)
 Range("A11").Resize(行, 列).Value = NewTB

 Erase TBL_1, TBL_2, tbb, NewTB
End Sub

321 hits

【286】二次元配列の合体 Jaka 17/9/1(金) 22:46 Excel[未読]
【287】ちょい変更 Jaka 17/9/1(金) 23:39 Excel[未読]
【288】Re:二次元配列の合体 マナ 17/9/3(日) 21:11 Excel[未読]

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
13 / 277 ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free