■お題
1~100までの数字をセルに出力する。ただし、3の倍数の時に「Fizz」、5の倍数の時に「Buzz」、3と5の倍数の時に「FizzBuzz」と表示しなさい。
1~100までの数字をセルに出力する。ただし、3の倍数の時に「Fizz」、5の倍数の時に「Buzz」、3と5の倍数の時に「FizzBuzz」と表示しなさい。
■解答例
まずは、1~100まで出力するコードを書く。
次に3の倍数の時、つまり3で割って余り0の時に"Fizz"と出力。5の倍数の時、つまり5で割って余り0の時に"Buzz"と出力する処理を書いてみる。
このままだと3と5の倍数の時に3の倍数の処理が行われて"Fizz"のみになるのでこれらの処理より先に3と5の倍数の処理をしなければいけない。
(完成形その1)
下記のような書き方もいいですね。
(完成形その2)
7行目:3の倍数の時は、"Fizz"。
8行目:5の倍数の時は、3と5の倍数もありえるので Temp & "Buzz"
9行目:値がない時は、3でも5の倍数でもない。
11行目:それらの結果を出力する。
まずは、1~100まで出力するコードを書く。
Option Explicit Sub SampleCode() Dim row As Integer For row = 1 To 100 Cells(row, 1) = row Next End Sub
次に3の倍数の時、つまり3で割って余り0の時に"Fizz"と出力。5の倍数の時、つまり5で割って余り0の時に"Buzz"と出力する処理を書いてみる。
Option Explicit Sub SampleCode() Dim row As Integer For row = 1 To 100 If row Mod 3 = 0 Then Cells(row, 1) = "Fizz" ElseIf row Mod 5 = 0 Then Cells(row, 1) = "Buzz" End If Next End Sub
このままだと3と5の倍数の時に3の倍数の処理が行われて"Fizz"のみになるのでこれらの処理より先に3と5の倍数の処理をしなければいけない。
(完成形その1)
Option Explicit Sub SampleCode() Dim row As Integer For row = 1 To 100 If row Mod 3 = 0 And row Mod 5 = 0 Then Cells(row, 1) = "FizzBuzz" ElseIf row Mod 3 = 0 Then Cells(row, 1) = "Fizz" ElseIf row Mod 5 = 0 Then Cells(row, 1) = "Buzz" End If Next End Sub
下記のような書き方もいいですね。
(完成形その2)
Option Explicit Sub SampleCode() Dim row As Integer, Temp As String For row = 1 To 100 Temp = "" '条件に合うワードを一時格納する変数 If row Mod 3 = 0 Then Temp = "Fizz" If row Mod 5 = 0 Then Temp = Temp & "Buzz" If Temp = "" Then Temp = row Cells(row, 1) = Temp '最後に出力 Next End Sub
7行目:3の倍数の時は、"Fizz"。
8行目:5の倍数の時は、3と5の倍数もありえるので Temp & "Buzz"
9行目:値がない時は、3でも5の倍数でもない。
11行目:それらの結果を出力する。
0 件のコメント:
コメントを投稿