マトリクス演算
VBA 言語には変数として配列型が用意されているので、以下に示すようなベクトル
やマトリクスの演算が簡単に行える。数学で表記するベクトルやマトリクスの要素に付随す
る添字は配列名のカッコ内の引数で代表される。図4.1はそれらの対応関係を示す。
図4.1
(1) ベクトルの加減算

以上のようなベクトルの加減算は、それぞれのベクトルの要素を加減算すればよいので、
で表現でき、次のプログラムで演算ができる。
コード
Private Sub CommandButton1_Click()
Dim a(10), b(10), c(10), d(10)
With Worksheets("sheet1")
n = .Cells(5, 2)
End With
For i = 1 To n
With Worksheets("sheet1")
a(i) = .Cells(5 + i, 3)
b(i) = .Cells(5 + i, 6)
End With
Next i
For i = 1 To n
c(i) = a(i) + b(i)
Next i
For i = 1 To n
With Worksheets("sheet1")
.Cells(17 + i, 9) = c(i)
End With
Next i
End Sub
Private Sub CommandButton2_Click()
Dim a(10), b(10), c(10), d(10)
With Worksheets("sheet1")
n = .Cells(5, 2)
End With
For i = 1 To n
With Worksheets("sheet1")
a(i) = .Cells(5 + i, 3)
b(i) = .Cells(5 + i, 6)
End With
Next i
For i = 1 To n
d(i) = a(i) - b(i)
Next i
For i = 1 To n
With Worksheets("sheet1")
.Cells(30 + i, 9) = d(i)
End With
Next i
End Sub
(2) ベクトルの積
ここではベクトルの内積を考えると、結果はスカラーである。計算式は![]()
で表現でき、次のプログラムで演算ができる。
コード
Private Sub CommandButton1_Click()
With Worksheets("sheet1")
n = .Cells(4, 2)
End With
Sum = 0
For i = 1 To n
With Worksheets("sheet1")
A = .Cells(5 + i, 3)
B = .Cells(5 + i, 6)
Sum = Sum + A * B
.Cells(24, 3) = Sum
End With
Next i
End Sub
(3) マトリクスの加減算

以上のようなマトリクスの加減算は、それぞれのマトリクスの要素同士を加減算すれば
よいので、
で表現でき、次のプログラムで演算ができる。
コード
Private Sub CommandButton1_Click()
Range("C23:L32").Select
Selection.ClearContents
ActiveWindow.LargeScroll ToRight:=-1
Range("B4").Select
With Worksheets("sheet1")
n = .Cells(4, 2)
End With
For i = 1 To n
For j = 1 To n
With Worksheets("sheet1")
A = .Cells(5 + i, 2 + j)
B = .Cells(5 + i, 14 + j)
C = A + B
.Cells(22 + i, 2 + j) = C
End With
Next j
Next i
End Sub
Private Sub CommandButton2_Click()
Range("O23:X32").Select
Selection.ClearContents
ActiveWindow.LargeScroll ToRight:=-1
Range("B4").Select
With Worksheets("sheet1")
n = .Cells(4, 2)
End With
For i = 1 To n
For j = 1 To n
With Worksheets("sheet1")
A = .Cells(5 + i, 2 + j)
B = .Cells(5 + i, 14 + j)
C = A - B
.Cells(22 + i, 14 + j) = C
End With
Next j
Next i
End Sub
(4) マトリクスの積
マトリクスの積は、それぞれのマトリクスの行ベクトルと列ベクトルの内積を要素と
して求められるので、
で表現でき、次のプログラムで演算ができる。
コード
Private Sub CommandButton1_Click()
Range("C23:L32").Select
Selection.ClearContents
ActiveWindow.LargeScroll ToRight:=-1
Range("B4").Select
With Worksheets("sheet1")
n = .Cells(4, 2)
End With
For i = 1 To n
For j = 1 To n
Sum = 0
For k = 1 To n
With Worksheets("sheet1")
A = .Cells(5 + i, 2 + k)
B = .Cells(5 + k, 14 + j)
Sum = Sum + A * B
.Cells(22 + i, 2 + j) = Sum
End With
Next k
Next j
Next i
End Sub