For文を使った足し算
1から10までの数の合計を計算しましょう。cells(1,1)=1+2+3+4+5+6+7+8+9+10
と書いても計算できますが、これでは「1から100までの数の合計を計算しなさい」と言われた時に大変です。
同じような作業の繰り返しはパソコンに任せましょう。
sub 足し算()
wa=0
for j=1 to 10
wa=wa+j
next j
cells(1,1)=wa
end sub
と書いて実行すると、cells(1,1)に1から10までの数の合計が計算されます。
理由は、まず最初にwa=0にしておいて
wa=wa+1 (この時点でwaは1)
wa=wa+2 (この時点でwaは1+2)
wa=wa+3 (この時点でwaは1+2+3)
wa=wa+4 (この時点でwaは1+2+3+4)
wa=wa+5 (この時点でwaは1+2+3+4+5)
wa=wa+6 (この時点でwaは1+2+3+4+5+6)
wa=wa+7 (この時点でwaは1+2+3+4+5+6+7)
wa=wa+8 (この時点でwaは1+2+3+4+5+6+7+8)
wa=wa+9 (この時点でwaは1+2+3+4+5+6+7+8+9)
wa=wa+10(この時点でwaは1+2+3+4+5+6+7+8+9+10)
となるからです。
練習:1から100までの数の合計を計算しなさい。
For文を使った足し算
実際のデータの足し算をしてみましょう。以前と同じデータを使います。
|
出典 |
すると20人の身長はB2からB21、つまりCells(2,2)からCells(21,2)にあります。
このままでは番号が分かりづらいので、x(1), x(2),...,x(20)という変数を用意して、そこへ代入します。
sub 身長と座高()
dim x(20)
for j=1 to 20
x(j)=cells(j+1,2)
next j
end sub
ここまででは身長のデータを配列x(1), x(2),...,x(20)に読み込んで終わりです。
練習:20人の身長の合計を計算して、一行あけたcells(23,2)に代入するようにマクロを書き足しなさい。
sub 身長と座高()
dim x(20)
for j=1 to 20
x(j)=cells(j+1,2)
next j
ここに身長の合計を変数 wa に代入するマクロを書く
cells(23,1)="合計"
cells(23,2)=wa
end sub
合計を計算したら続けて平均も計算できます。
変数名に漢字を使うこともできます。
sub 身長と座高()
dim x(20)
for j=1 to 20
x(j)=cells(j+1,2)
next j
ここに身長の合計を変数 wa に代入するマクロを書く
cells(23,1)="合計"
cells(23,2)=wa
身長の平均=wa/20
cells(24,1)="平均"
cells(24,2)=身長の平均
end sub
"平均"のように " " で囲むと 平均 という文字が表示され、囲まないと 身長の平均 という変数に代入された値が表示されます。
While文を使って個数を数える
今回は20人のデータでしたが、一つのマクロを複数のデータに対して用いる場合は、データによって人数が一定とは限りません。そのような場合のために、マクロの最初で人数を数えましょう。
数える操作は何回繰り返すかが分かっておらず、上から順に見ていって最後に到達するまで繰り返します。
このように、条件を指定して繰り返すにはWhile文を使います。
Do While 条件
この部分が繰り返される
Loop
先ほどのマクロのEnd Subより後に、次のマクロを書いてみてください。
Sub 数える()
j = 1
Do While Cells(j + 1, 2) <> ""
j = j + 1
Loop
人数=j
MsgBox (人数)
End Sub
最後のMsgBox(人数)は、人数という変数の値を表示するマクロです。
Cells(j+1,2)が空っぽではない間は繰り返す、という意味です。
正しく数えられましたか?ずれていた場合はその理由を考えましょう。
配列の大きさを変更する。
人数が分かったので配列を用意するときにDim x(人数)
と書きたいのですが、これではエラーになります。
配列を用意するときの(括弧)の中に変数を書くことは出来ません。
マクロの途中で配列の大きさを変えるには、まず最初に
Dim x()
のように(括弧)の中に何も書かずに
人数を数えた後で
ReDim x(人数)
と書きます。
0 件のコメント:
コメントを投稿