Weitere ähnliche Inhalte
Mehr von Katsuhiro Morishita (20)
VBAにおける配列の データ構造と行列
- 3. 普通の配列
• 配列は、連続した箱である。
• 「Dim a(2) as Double」の様に宣言して使う。
• ↑の丸括弧()の中の数字は最大要素番号である。
• 箱には同じ型の変数しか入れられない。
• 配列の中に格納する一つ一つの値のことを要素と呼ぶ。
• 「a(1)」の様にして要素にアクセスできる。
• アクセスに使うカッコ()内の数字を添え字という。
Dim a(2) as Double
a(0) a(1) a(2)a
変数名
3
- 5. 2次元配列
• 配列は多次元に拡張できる。
• 例えば2次元であれば「 Dim a(2,3) as Double 」の様に宣言する。
• この例では、1次元目の最大要素番号が2で、2次元目の最大要素番
号が3だ。
Dim a(2,3) as Double
a(0,0) a(0,1) a(0,2) a(0,3)
a(1,0) a(1,1) a(1,2) a(1,3)
a(2,0) a(2,1) a(2,2) a(2,3)
a
変数名
5
- 7. 2次元配列と行列
• 行列をVBAで計算する場合、2次元配列に行列の値を格納する。
• 大抵の場合は以下のように扱う。
a(0,0) a(0,1) a(0,2)
a(1,0) a(1,1) a(1,2)
a(2,0) a(2,1) a(2,2)
11 12 13
21 22 23
31 32 33
• すなわち、第1次元目の要素番号を行番号とし、第2次元目の要
素番号を列番号とみなす。1だけずれているが。
• つまり、a(1,2)は行列の2行3列目に相当する。
7
- 10. a(0) a(1) a(2)
row0(0) row0(1) row0(2) row1(0) row1(1) row1(2) row2(0) row2(1) row2(2)
UBound()は引数の最大要素番号を返す関数である。
UBound(a)はaの最大要素番号である。下の例では、大枠の箱の数-1となる。
UBound(a(0))はaの第1要素の最大要素番号である。下の例では、a(0)の箱の数-1となる。
10
- 12. 2次元配列とArrayの入れ子の違い
2次元配列 Arrayの入れ子
a(i, j)でアクセス a(i)(j)でアクセス
特定の行だけ取り出すことはできない
行ベクトルの取り出しが簡単
例:row = a(1)
Range()関数を使ってcellに貼り付け
られる
例:Range(”A1:C3”) = a
Range関数を使ってcellに貼り付けら
れない
←文法的に関数に代入しているようで
そもそも気持ち悪いのだが。
行数は以下で得られる。
UBound(a, 1) + 1
列数は、UBound(a, 2) + 1
行数は以下で得られる。
UBound(a) + 1
列数は、UBound(a(0)) + 1
12