■お題
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 件のコメント:
コメントを投稿