- 前回の解答
Sub 相関係数()
Dim x() As Single, y() As Single
Rem 身長の個数を数えます。この個数は最後まで共通で使えます。
i = 1
Do While Selection.Cells(i, 1) <> "" And IsNumeric(Selection.Cells(i, 1))
i = i + 1
Loop
n = i - 1
Selection.Cells(n + 1, 1) = n
Rem 身長を配列xに読み込みます。そして先週までの方法で、身長の合計、平均、分散、標準偏差を求めてB列に書いてください。
ReDim x(n)
For i = 1 To n
x(i) = Selection.Cells(i, 1)
Next i
wa = 0
For i = 1 To n
wa = wa + x(i)
Next i
Selection.Cells(n + 2, 1) = wa
heikin1 = wa / n
Selection.Cells(n + 3, 1) = heikin1
wa2 = 0
For i = 1 To n
wa2 = wa2 + (x(i) - heikin1) ^ 2
Next i
bunsan1 = wa2 / n
Selection.Cells(n + 4, 1) = bunsan1
hensa1 = Sqr(bunsan1)
Selection.Cells(n + 5, 1) = hensa1
Rem 同様に、座高を配列yに読み込んで,座高の合計、平均、分散、標準偏差を求めてC列に書いてください。
Selection.Cells(n + 1, 2) = n
ReDim y(n)
For i = 1 To n
y(i) = Selection.Cells(i, 2)
Next i
wa = 0
For i = 1 To n
wa = wa + y(i)
Next i
Selection.Cells(n + 2, 2) = wa
heikin2 = wa / n
Selection.Cells(n + 3, 2) = heikin2
wa2 = 0
For i = 1 To n
wa2 = wa2 + (y(i) - heikin2) ^ 2
Next i
bunsan2 = wa2 / n
Selection.Cells(n + 4, 2) = bunsan2
hensa2 = Sqr(bunsan2)
Selection.Cells(n + 5, 2) = hensa2
Rem B2に書かれている一人目の身長の値から、身長の平均を引いた値をD2に書いてください。同じことを、D21まで繰り返してください。
For i = 1 To n
Selection.Cells(i, 3) = x(i) - heikin1
Next i
Rem C2に書かれている一人目の座高の値から、座高の平均を引いた値をE2に書いてください。同じことを、E21まで繰り返してください。
For i = 1 To n
Selection.Cells(i, 4) = y(i) - heikin2
Next i
Rem D2に書いた一人目の身長と身長の平均との差と、E2に書いた一人目の座高と座高の平均の差を掛け算してF2に書いてください。同じことを、F21まで繰り返してください。
For i = 1 To n
Selection.Cells(i, 5) = Selection.Cells(i, 3) * Selection.Cells(i, 4)
Next i
Rem F2からF21までの20個の平均を求めてF22に書いてください。それが共分散です。
wa = 0
For i = 1 To n
wa = wa + Selection.Cells(i, 5)
Next i
kyobunsan = wa / n
Selection.Cells(n + 1, 5) = kyobunsan
Rem 共分散を身長の標準偏差と座高の標準偏差で割ってF23に書いてください。それが相関係数です。
soukankeisu = kyobunsan / (hensa1 * hensa2)
Selection.Cells(n + 2, 5) = soukankeisu
End Sub - 異なるシート上の演算
今回はシート1、シート2にある数値の和をシート3に表示させてみましょう。
例えば、シート1のセルA1に「5」、シート2のセルA1に「3」が入れると、シート3のセルA1に5+3の答「8」が入るようなプログラムを組んでみます。
Sub ベクトル()
Dim wa As Single, x As Single, y As Single
Sheets(1).Select
x = Cells(1, 1)
Sheets(2).Select
y = Cells(1, 1)
wa = x + y
Sheets(3).Select
Cells(1, 1) = wa
End Sub - ベクトルの和
次にシート1、シート2にあるベクトルの和をシート3に表示させてみましょう。
+ →
例えば、シート1のセルA1から「5,4,3」、シート2のセルA1から「3,5,7」というベクトルが入っているとき、シート3のセルA1から「5+3,4+5,3+7」が入るようなプログラムを組んでみます。
次のプログラムは一応動きますが、これでは縦に並んだ数が変わるとプログラムを書き直さなければなりません。Sub ベクトル()
Dim x(3) As Single, y(3) As Single, z(3) As Single
Sheets(1).Select
x(1) = Cells(1, 1)
x(2) = Cells(2, 1)
x(3) = Cells(3, 1)
Sheets(2).Select
y(1) = Cells(1, 1)
y(2) = Cells(2, 1)
y(3) = Cells(3, 1)
z(1)=x(1)+y(1)
z(2)=x(2)+y(2)
z(3)=x(3)+y(3)
Sheets(3).Select
Cells(1,1)=z(1)
Cells(2,1)=z(2)
Cells(3,1)=z(3)
End Sub
- 練習問題
(1)上のプログラムを、数字が3個ではなく100個並んだベクトル用に書き直しなさい。
(2)3個とか100個とかに固定せずに、Sheet1に並んでいる数を数えて、ベクトルの足し算を行うプログラムを書きなさい。
- Sheet1に並んでいる個数とSheet2に並んでいる個数が違っていると、ベクトルの足し算は出来ません。例えば
+
では足し算できません。ですから、最初のベクトルと二番目のベクトルの型を 調べて、等しいときだけ足し算するプログラムを作りましょう。等しいかどうか 判定するには
If 条件 Then
条件が成立するときに実行するプログラム
Else
条件が不成立のときに実行するプログラム
End If
という形式の文を使います。
Amazonブラックフライデー、11月29日〜12月6日に開催
-
Amazonは、年末最後のビッグセール「Amazonブラックフライデー」を2024年11月29日(金)0時〜12月6日(金)23時59分まで開催する。セール開催に先駆け、先行セールを27日と28日に実施する。
プライム会...
0 件のコメント:
コメントを投稿