- 前回の回答
Sub ベクトル()
Dim n1 As Integer, n2 As Integer, i As Integer
Dim x() As Single, y() As Single, z() As Single
Sheets(1).Select
i = 1
Do While Selection.Cells(i, 1) <> "" And IsNumeric(Selection.Cells(i, 1))
i = i + 1
Loop
n1 = i - 1
Sheets(2).Select
i = 1
Do While Selection.Cells(i, 1) <> "" And IsNumeric(Selection.Cells(i, 1))
i = i + 1
Loop
n2 = i - 1
If n1 = n2 Then
ReDim x(n1)
ReDim y(n1)
ReDim z(n1)
Sheets(1).Select
For i = 1 To n1
x(i) = Selection.Cells(i, 1)
Next i
Sheets(2).Select
For i = 1 To n1
y(i) = Selection.Cells(i, 1)
Next i
For i = 1 To n1
z(i) = x(i) + y(i)
Next i
Sheets(3).Select
For i = 1 To n1
Selection.Cells(i, 1) = z(i)
Next i
Else
MsgBox ("ベクトルの型が異なるので足し算できません")
End If
End Sub - 行列の足し算
ベクトルではなく次のように行列が入力されている場合について足し算するプログラムを書きましょう。
+ →
このように、縦横の2つの方向に数字が並んでいるときには、それを記憶する配列も添え字が2つ必要です。
Dim x(4,3) As Single
と書くと、
x(1,1), x(1,2), x(1,3)
x(2,1), x(2,2), x(2,3)
x(3,1), x(3,2), x(3,3)
x(4,1), x(4,2), x(4,3)
の12個が使えるようになります。(注:正確にはx(0,0)なども使えるので20個使えます)
この配列にシートから数字を読み込むためには
x(1,1)=Selection.Cells(1,1)
x(2,1)=Selection.Cells(2,1)
x(3,1)=Selection.Cells(3,1)
x(4,1)=Selection.Cells(4,1)
x(1,2)=Selection.Cells(1,2)
x(2,2)=Selection.Cells(2,2)
x(3,2)=Selection.Cells(3,2)
x(4,2)=Selection.Cells(4,2)
x(1,3)=Selection.Cells(1,3)
x(2,3)=Selection.Cells(2,3)
x(3,3)=Selection.Cells(3,3)
x(4,3)=Selection.Cells(4,3)
と書きますが、この書き方だと行列の成分の個数と同じ数だけプログラムを繰り返し書かなければなりません。 繰り返す部分をFor文を使ってまとめましょう。For i=1 to 4
x(i,1)=Selection.Cells(i,1)
Next i
For i=1 to 4
x(i,2)=Selection.Cells(i,2)
Next i
For i=1 to 4
x(i,3)=Selection.Cells(i,3)
Next iこのようにすると少しはまとめることが出来ますが、まだまだ似たようなプログラムを3回書かなければなりません。
For i=1 to 4
x(i,1)=Selection.Cells(i,1)
Next iこの赤い部分だけが1, 2, 3と変わりながら繰り返されているので、さらにFor文を使って繰り返します。
For j=1 to 3
For i=1 to 4
x(i,j)=Selection.Cells(i,j)
Next i
Next jこのように書くと、Sheet1の行列を配列xに読み込むことが出来ました。
- 課題1:4行3列の行列の足し算を行うプログラムを完成させなさい。
課題2:行列の型を調べて、行の数同士が等しく、列の数同士が等しい時だけ行列の足し算をし、そうでないときは「行列の型が異なるので足し算できません」と表示するプログラムを作ってください。If 文で条件が二つ以上あるときは、 And や Or を使います。
【東京都】個人宅の防犯カメラや録画機能つきドアホン購入を半額助成、2025年度は最大2万円
-
東京都は、個人宅に防犯カメラやカメラ付きインターホンなどの防犯機器を設置すると、購入にかかる費用の半額を最大20,000円まで補助する事業を2025年(令和7年度)に実施、2026年度(令和8年度)にも最大1万円を自治体...
0 件のコメント:
コメントを投稿