• 締切済み

配列をリサイズする

imogasiの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_070_08.html に在る記事と 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 A1 B1 C1 D1 A2 B2 C2 D2 A3 B3 C3 D3 が H1:K2に A2 B2 C2 D2 A3 B3 C3 D3 ーーーー ・これが質問者のニーズにあっているか ・合っていたとして、百万行などのオーダーで速度的に実行可能か ・ForNextに対してこちらが有利か プログラムコーディング上は簡単(少数行)になっても実行で有利や可能とは別。 ・システム制限に引っかから無いか 考えてください。 上記WEBで田中先生の文章の >1,000,000個のデータにアクセスして1秒~2秒なのですから、・・ を参照してください。 ーー 上記で'B = Range("A2:D3") は予想通り不可です。 A配列=B配列のコードが書ける言語・処理系とダメな言語(繰り返しで全要素を代入必要)があると思う。 エクセルVBAでは、セルの数がそこそこなら、シートは2次元配列的なので、配列にわざわざ落とす経験はあまりしてないので、じゅうぶんな自信はないが参考に。 多数セルに書き込む処理があればScreenUpdating=False(True)を入れてください。

関連するQ&A

  • vectorのresizeについて

    class A{ vector<double> data; public: A(int a){ this->data.resize(a); } }; template<class T> class B { std::vector<T> vec; public: B(int a){ this->vec.resize(a); } }; int main() { B<A> c(10); } としたとき class A のコンストラクタの値を指定することができません. vectorのresizeにコンストラクタの値を指定することができるのでしょうか. また,resize以外にこのようなことをすることができるのでしょうか. 回答よろしくお願いします.

  • VBAで生成した配列の受渡

    お世話になります。 エクセルAのVBAで、配列Aを生成・使用しています。 アクセスBのVBAで、その配列Aの中身を使用したいのですが、 現在は、  エクセルA:配列Aの中身をテキストに書き出す。  アクセスB:テキストを取り込む という形で、受渡をしています。 このようなテキストを介さずに、 直接、配列のコピー(もしくは、エクセルの配列Aをアクセスで直接しよう) する方法はあるのでしょうか? 何卒宜しくお願いします。

  • VBAの配列について

    VBAの配列について質問があります。 以下のような配列Aと配列Bがあったとします。 やりたいことは、配列Cを作成して、配列Aと配列Bを結合したいです。 ----------------------------------------- Dim 配列A(3) 配列A(0) = 10 配列A(1) = 11 配列A(2) = 12 Dim 配列B(3) 配列B(0) = 100 配列B(1) = 110 配列B(2) = 120 ---------------------------------------- Dim 配列C(6) 配列A(0) = 10 配列A(1) = 11 配列A(2) = 12 配列A(3) = 100 配列A(4) = 110 配列A(5) = 120 ---------------------------------------- 配列Cを作るために、配列Aを拡張して、配列Bを挿入すれば可能 でありますが、関数のようなもので簡単に表現できないもので しょうか? 何かご存知でしたが、ご教授願います。

  • 配列について

    C言語についてです。 配列を次のように指定します。 a[3][3][3]={{ {1,7,6}, {6,9,2}, {3,1,1}, },{ {4,6,5}, {5,2,2}, {9,3,7}, },{ {2,6,8}, {2,2,4} {1,1,5}, }} b[3][3]={ {5,5,1}, {3,8,2}, {6,7,0}, } aの配列の中で、bの配列との差が1であるのが多い配列を表示するプログラムを教えてください。 ただし、 {1,7,6}, {6,9,2}, {3,1,1}, なら1、 {4,6,5}, {5,2,2}, {9,3,7}, なら2、 {2,6,8}, {2,2,4} {1,1,5}, なら3と表示する。

  • ttest関数の配列の指定

    エクセルのttest関数に関する質問です。 A2~A10のセルに「はい」「いいえ」のどちらかが書いてあり、B2~B10には何らかの数字が書いてあります。 ttest関数を使って、「はい」の配列と「いいえ」の配列の検定を行うため =ttest({A2:A10,"はい",B2:B10}, {A2:A10,"いいえ",B2:B10}, 2, 3) と書いたのですが、エラーが出てしまいます。 どう書けばよいのでしょうか。

  • 配列のソートについて

    配列をソートした時、もともとデータのあった配列番号を記憶しておきたいのですが いい方法はないでしょうか (31,55,84,20,96,14); //1 2 3 4 5 6 ↓ (14,20,31,55,84,96) //6 4 1 2 3 5    ※ソート前の配列番号 いくつかの行(配列A)の、違う列にあるデータを抜き出して配列Bにまとめた後、配列Bをソート その後、配列Bのもともとの順番の位置の行にあるデータを上からコピーしていく感じで行ごとのソートを考えています イメージはこんな感じです a[0]=[1,512,200]; a[1]=[3,100,1]; a[2]=[4,100,265]; a[3]=[8,300,1]; //ソート対象を抜き出す b[0]=a[0][1]; b[1]=a[1][2]; b[2]=a[2][0]; b[3]=a[3][1]; b.sort(); c[0]=a[b[0]のソート前の配列番号]; c[1]=a[b[1]のソート前の配列番号]; c[2]=a[b[2]のソート前の配列番号]; c[3]=a[b[3]のソート前の配列番号];

  • 二つの配列から連想配列を作る方法

    @Aと@Bという二つの配列があり、そこから %C = ( "$A[0]" => "$B[0]", "$A[1]" => "$B[1]", "$A[2]" => "$B[2]", ・ ・ ・ ); という連想配列を作ることは出来ますでしょうか。 @Aと@Bは変動するので%Cは自動的に作成したいのです。 宜しく願い致します。

    • ベストアンサー
    • Perl
  • 配列について

    配列の要素数をinteger型にいれたいのですがどうしたらいいですか? 例   Dim A() As String   Dim B AS Integer       A = "あ","い","う" Aの要素数3をBに入れたいのです。 この配列の作りかたもあっているか分かりませんがよろしくお願いします。

  • PHPの配列でわからないことがあるので教えてください。

    PHPの配列でわからないことがあるので教えてください。 例えば以下のような2つの配列$aと$bがあるとします。 $a[0]=a、$a[1]=b、$a[2]=c $b[0]=w、$b[1]=q、$b[2]=b、$b[3]=c これで、$a[1]と$b[2]の中身が同じであることを取得し、さらに$bの配列の添え字の2を返すようにしたいのですが、わかりません。 どのようにプログラムを書けばよいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 連想配列を配列に入れるには

    下記のような連想配列を配列に入れる簡単な方法はありますか。 array("a"=>"1","b"=>"2") 期待する結果(print_r) Array ( [0] => Array ( "a" => "1" ) [1] => Array ( "b" => "2" ) ) 宜しくお願い致します。

    • ベストアンサー
    • PHP