FizzBuzz問題の解答例 Excel VBA編

Excel VBAによるFizzBuzz問題の解答例。

解答例

条件分岐とループによるプログラム:

Option Explicit  ' 変数の宣言を強制する

Rem VBAProject - 標準モジュール - Module1
Rem Excel VBAでは複数行コメントは非対応

Sub fizzbuzz()
    Dim i As Integer

    For i = 1 To 100
        If i Mod 3 = 0 And i Mod 5 = 0 Then  ' iが3の倍数かつ5の倍数
            ActiveCell.Offset(i - 1, 0).Value = "Fizz,Buzz"
        ElseIf i Mod 3 = 0 Then  ' iが3の倍数(かつ、5の倍数でない)
            ActiveCell.Offset(i - 1, 0).Value = "Fizz"
        ElseIf i Mod 5 = 0 Then  ' iが5の倍数(かつ、3の倍数でない)
            ActiveCell.Offset(i - 1, 0).Value = "Buzz"
        Else  ' iが3の倍数でも5の倍数でもない
            ActiveCell.Offset(i - 1, 0).Value = i
        End If
    Next
End Sub

サブルーチンの再帰呼び出しによるプログラム:

Option Explicit  ' 変数の宣言を強制する

Rem VBAProject - 標準モジュール - Module1
Rem Excel VBAでは複数行コメントは非対応

Sub fizzbuzz()
    Call fizzbuzz_rc(100)
End Sub

Sub fizzbuzz_rc(n As Integer)
    If n > 1 Then
        Call fizzbuzz_rc(n - 1)
    End If

    If n Mod 3 = 0 And n Mod 5 = 0 Then  ' nが3の倍数かつ5の倍数
        ActiveCell.Offset(n - 1, 0).Value = "Fizz,Buzz"
    ElseIf n Mod 3 = 0 Then  ' nが3の倍数(かつ、5の倍数でない)
        ActiveCell.Offset(n - 1, 0).Value = "Fizz"
    ElseIf n Mod 5 = 0 Then  ' nが5の倍数(かつ、3の倍数でない)
        ActiveCell.Offset(n - 1, 0).Value = "Buzz"
    Else  ' nが3の倍数でも5の倍数でもない
        ActiveCell.Offset(n - 1, 0).Value = n
    End If
End Sub

関連記事

FizzBuzz問題の解答例 まとめ

【theme : プログラミング
【genre : コンピュータ

プロフィール

よしいず

Author:よしいず
MATHEMATICS.PDFというウェブサイトを運営しています。

管理の都合上、トラックバックとコメントはオフにしてあります。ブログ経験者なら分かっていただけると思いますが、スパム(アダルトやその他の宣伝)ばかりなのが現実です。

リンクは自由です。当サイトの記事に対する間違いの指摘・意見・感想などを述べた記事からのリンクは歓迎です。ただし、ブログ記事アップ直後はミスが多く、頻繁に修正します。場合によっては削除する可能性もあります。その際、何も断りもなく修正・削除しますがご了承ください。内容を参考にする場合には投稿後一週間ほど様子を見てからにしてください(笑)。

記事の間違いを指摘するときは、その具体的箇所、理由(仕様に反するなど)・根拠(参考にした文献など)、代替案(同じ結果を得るための正しいやり方)も教えてください。そうしないと、(指摘される側および第三者はその時点では無知の状態なので、)どこが間違いなのか分かりませんし、本当に間違っているのかどうかが判断・検証できません。実際、間違いだと指摘されたことが結局は正しかったというケースもありますので。

このブログのタイトル一覧

リンク
月別アーカイブ
カテゴリ
最新記事
検索フォーム
RSSリンクの表示