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 : コンピュータ

検索フォーム
最新記事
リンク
RSSリンクの表示
プロフィール

よしいず

Author:よしいず
MATHEMATICS.PDFというウェブサイトを運営しています。アマゾンにて電子書籍を販売しています。

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

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

Kindle 本についても、販売開始直後は修正のためのアップロードを行うことが多いです。あと、購入前に、ダブルクォートで囲んたキーワード「"よしいず"」で検索し、結果を「出版年月が新しい順番」で並べ替えて、今購入しようとしている Kindle 本の新バージョンがないかどうか確認してください。

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

カテゴリ
月別アーカイブ