![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub0 …
に在る記事と
http://officetanaka.net/excel/vba/speed/s11.htm
の記事から
Sub TEST8()
Dim S2 As Worksheet
Dim A(1 To 3, 1 To 4) As String ' 3×4の2次元配列
Dim B(1 To 3, 1 To 4) As String
Set S2 = Worksheets("Sheet2")
' 2次元配列に値をセット(1つずつ原始的に!)
A(1, 1) = "A1"
A(1, 2) = "B1"
A(1, 3) = "C1"
A(1, 4) = "D1"
A(2, 1) = "A2"
A(2, 2) = "B2"
A(2, 3) = "C2"
A(2, 4) = "D2"
A(3, 1) = "A3"
A(3, 2) = "B3"
A(3, 3) = "C3"
A(3, 4) = "D3"
' 配列を一気にセル範囲に転記
S2.Cells(1, 1).Resize(3, 4).Value = A
GoTo p1
'B = Range("A2:D3")
For i = 1 To 2
For j = 1 To 4
MsgBox B(i, j)
Next j
Next i
p1:
'--
Dim C As Variant
C = Range("A2:D3")
Range("H1:K2") = C
End Sub
を作ってやってみると
A1:D3
A1B1C1D1
A2B2C2D2
A3B3C3D3
が
H1:K2に
A2B2C2D2
A3B3C3D3
ーーーー
・これが質問者のニーズにあっているか
・合っていたとして、百万行などのオーダーで速度的に実行可能か
・ForNextに対してこちらが有利か
プログラムコーディング上は簡単(少数行)になっても実行で有利や可能とは別。
・システム制限に引っかから無いか
考えてください。
上記WEBで田中先生の文章の
>1,000,000個のデータにアクセスして1秒~2秒なのですから、・・
を参照してください。
ーー
上記で'B = Range("A2:D3")
は予想通り不可です。
A配列=B配列のコードが書ける言語・処理系とダメな言語(繰り返しで全要素を代入必要)があると思う。
エクセルVBAでは、セルの数がそこそこなら、シートは2次元配列的なので、配列にわざわざ落とす経験はあまりしてないので、じゅうぶんな自信はないが参考に。
多数セルに書き込む処理があればScreenUpdating=False(True)を入れてください。
に在る記事と
http://officetanaka.net/excel/vba/speed/s11.htm
の記事から
Sub TEST8()
Dim S2 As Worksheet
Dim A(1 To 3, 1 To 4) As String ' 3×4の2次元配列
Dim B(1 To 3, 1 To 4) As String
Set S2 = Worksheets("Sheet2")
' 2次元配列に値をセット(1つずつ原始的に!)
A(1, 1) = "A1"
A(1, 2) = "B1"
A(1, 3) = "C1"
A(1, 4) = "D1"
A(2, 1) = "A2"
A(2, 2) = "B2"
A(2, 3) = "C2"
A(2, 4) = "D2"
A(3, 1) = "A3"
A(3, 2) = "B3"
A(3, 3) = "C3"
A(3, 4) = "D3"
' 配列を一気にセル範囲に転記
S2.Cells(1, 1).Resize(3, 4).Value = A
GoTo p1
'B = Range("A2:D3")
For i = 1 To 2
For j = 1 To 4
MsgBox B(i, j)
Next j
Next i
p1:
'--
Dim C As Variant
C = Range("A2:D3")
Range("H1:K2") = C
End Sub
を作ってやってみると
A1:D3
A1B1C1D1
A2B2C2D2
A3B3C3D3
が
H1:K2に
A2B2C2D2
A3B3C3D3
ーーーー
・これが質問者のニーズにあっているか
・合っていたとして、百万行などのオーダーで速度的に実行可能か
・ForNextに対してこちらが有利か
プログラムコーディング上は簡単(少数行)になっても実行で有利や可能とは別。
・システム制限に引っかから無いか
考えてください。
上記WEBで田中先生の文章の
>1,000,000個のデータにアクセスして1秒~2秒なのですから、・・
を参照してください。
ーー
上記で'B = Range("A2:D3")
は予想通り不可です。
A配列=B配列のコードが書ける言語・処理系とダメな言語(繰り返しで全要素を代入必要)があると思う。
エクセルVBAでは、セルの数がそこそこなら、シートは2次元配列的なので、配列にわざわざ落とす経験はあまりしてないので、じゅうぶんな自信はないが参考に。
多数セルに書き込む処理があればScreenUpdating=False(True)を入れてください。
No.4
- 回答日時:
質問の内容がちょっと把握できていないのですが「2次元配列の行と列の入れ替え」
ということでしたらhttp://officetanaka.net/excel/vba/tips/tips124.htmは参考になりませんか?
元の配列の値がどこからくるのか(csvなどのファイル、シート、DB)によりますけど
バリアント型の変数に配列を入れることが出来ればシートを経由しても結構早いと思います。
No.3
- 回答日時:
VBAで配列のリサイズは可能ですが制限があります
A(3,5)といった配列の場合 ,5の最も右側にある次元のみ変更可能です
ただしこの場合でも 最低の添え字の変更は不可能です
Dim A()
と宣言
ReDim A(3,5)
を実行すれば A(0,0)から A(3,5)までの24要素になります
ReDim A(3,2) とすれば A(0,0)から A(3,2)の12要素に変更できます
この場合には Aの中身はクリアされます
クリアさせないためには Preserve をつけて実行します
ReDim preserve A(3,2)
といった具合です
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで大量データの処理 3 2022/11/15 21:53
- Excel(エクセル) excel vbaの配列なんですが・・・ 1 2022/12/26 18:50
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) 同じ品番のマスタで最新日付のものに〇印を入れたい 3 2023/03/31 17:45
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- その他(パソコン・スマホ・電化製品) リサイズ超簡単!Pro のインストールについて 1 2022/06/16 16:20
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Excel(エクセル) エクセルの関数 1 2022/06/08 23:38
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCEL VBA で、0から?1から?
-
VBAで配列の計算
-
パソコンキーボードで時分秒を...
-
IF関数でEmpty値を設定する方法。
-
エクセルの配列定数について教...
-
動的配列が存在(要素が有る)か...
-
VBで作った乱数を一度も重複さ...
-
C#でのコントロール配列について
-
配列にある重複要素を削除した...
-
遅延バインディングを使用でき...
-
C++、クラスメンバの構造体配列...
-
C言語 重複しない4ケタの乱数...
-
VB.net 引数で配列変数を渡す際...
-
五目並べのプログラムを配列と...
-
複数のテキストボックスに同じ...
-
C# 文字列の分割
-
C++の const int* dataを置き...
-
VBでbyte配列型のインスタンス...
-
キーボードの配列の意味は?
-
マルチスレッドの疑問点と配列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
応用情報技術者試験の令和元年...
-
IF関数でEmpty値を設定する方法。
-
VBAで配列の計算
-
パソコンキーボードで時分秒を...
-
EXCEL VBA で、0から?1から?
-
動的配列が存在(要素が有る)か...
-
変数を動的に作るには?
-
C言語 重複しない4ケタの乱数...
-
VBで作った乱数を一度も重複さ...
-
VB.net 引数で配列変数を渡す際...
-
配列の要素数を超えた参照のコ...
-
C#の質問
-
複数のテキストボックスに同じ...
-
VBでbyte配列型のインスタンス...
-
For文と配列
-
遅延バインディングを使用でき...
-
【MFC】GetCount()とGetSize()...
-
配列プロパティをREDIMする方法...
-
Excel VBAで配列の途中から(X)M...
-
五目並べのプログラムを配列と...
おすすめ情報