FizzBuzz問題をExcel VBAで解いてみた

当ページのリンクには広告が含まれています。

どうも!げんじです。

最近Javascript の勉強中にFizzBuzz問題を解く機会があり、ふとExcel VBAでも同じことできるよな~と思ったので解いてみました(。・ω・。)!

せっかく解けたので、今回はExcel VBAで解いたFizzBuzz問題について、備忘録も兼ねてゆるっとシェアしていきたいと思います!

いい頭の体操になるので、興味がある方は挑戦してみるのもいいかも!?

目次

FizzBuzz問題とは

Fizz Buzzとは1から順番に数字を言っていく英語圏の遊びです。

1, 2, ・・・

と一人ずつ順番に発言していくわけですが、3の倍数のときはFizz、5の倍数のときはBuzz、3の倍数かつ5の倍数のときはFizzBuzzと発言します。

1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16, 17, Fizz, 19, Buzz, ・・・

という具合に。

で、これをプログラミングでやるのがFizzBuzz問題。

1~100の自然数を1から順に100まで出力するプログラムを書け。
ただし、3の倍数のときはFizzを出力、5の倍数のときはBuzzを出力、
3の倍数かつ5の倍数のときはFizzBuzzと出力すること。

プログラマの腕試し的な問題らしい。

自分で解いてみたい人は、この下はまだ見ないで!

一旦解いてから読み進めよう(。・ω・。)!

FizzBuzz問題をVBAで解いてイミディエイトウインドウに出力してみた

さっそく1~100までFizzBuzzしてみました!
※分かりやすいようにFizzやBuzzを出力するときに数字も一緒に出力するようにしています。

ソースコードはこんな感じ↓

Sub FizzBuzz()
    Dim i As Integer
    
    For i = 1 To 100
        If i Mod 3 = 0 And i Mod 5 = 0 Then
            Debug.Print i & ":FizzBuzz"
        ElseIf i Mod 3 = 0 Then
            Debug.Print i & ":Fizz"
        ElseIf i Mod 5 = 0 Then
            Debug.Print i & ":Buzz"
        Else
            Debug.Print i
        End If
    Next i
End Sub

シンプルな問題ですが、For文(繰り返し文)の書き方や、IF文(条件分岐)の書き方、条件式などに対する理解などが問われ、これ一問解くために複数の知識をうまく組み合わせる必要があるので、なかなか書きごたえがありました。

条件式のポイントは、VBAでは割り算の余りの計算にはModという演算子を使うという点ですね。

Javascript やPythonでは割り算の余りを出力するのに%を使うので、少し新鮮でした。

演算子の種類演算子
足し算+
引き算
掛け算*
割り算/
割り算の商\
割り算の余りMod
べき乗^
参考:VBAの算術演算子まとめ

なお、実行結果はこんな感じで、VBEのイミディエイトウインドウに出力されます。↓

 1 
 2 
3:Fizz
 4 
5:Buzz
6:Fizz
 7 
 8 
9:Fizz
10:Buzz
 11 
12:Fizz
 13 
 14 
15:FizzBuzz
 16 
 17 
18:Fizz
 19 
20:Buzz
21:Fizz
 22 
 23 
24:Fizz
25:Buzz
 26 
27:Fizz
 28 
 29 
30:FizzBuzz
 31 
 32 
33:Fizz
 34 
35:Buzz
36:Fizz
 37 
 38 
39:Fizz
40:Buzz
 41 
42:Fizz
 43 
 44 
45:FizzBuzz
 46 
 47 
48:Fizz
 49 
50:Buzz
51:Fizz
 52 
 53 
54:Fizz
55:Buzz
 56 
57:Fizz
 58 
 59 
60:FizzBuzz
 61 
 62 
63:Fizz
 64 
65:Buzz
66:Fizz
 67 
 68 
69:Fizz
70:Buzz
 71 
72:Fizz
 73 
 74 
75:FizzBuzz
 76 
 77 
78:Fizz
 79 
80:Buzz
81:Fizz
 82 
 83 
84:Fizz
85:Buzz
 86 
87:Fizz
 88 
 89 
90:FizzBuzz
 91 
 92 
93:Fizz
 94 
95:Buzz
96:Fizz
 97 
 98 
99:Fizz
100:Buzz

良い感じに動いてくれました(。・ω・。)

実際の出力画面はこんな感じで100まで出力されます↓

いや~楽しかった!

今回はVBAでやりましたが、新しい言語を勉強するとき、その言語でもちゃんと解けるか試してみるのも面白そうです。

一問で色々な知識を試されるので、一通り文法を学んだあとの力試しにちょうど良さそうですね(。・ω・。)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

6浪したり、フリーターだったり、文系なのにガリレオに憧れて物理を独学してみたり、紆余曲折を経て会社員になった、中二病が治らない30代。「やりたいことが分からない」が分からない。いつも「かっこいい!」と感じる何かに突き動かされて多忙な毎日を送る。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次