Fizz Buzz問題」って、
・ループ
・条件判断
っていう、プログラムを作る際の基本的な考え方を使って作るものなんで。
自分なりにいろんな言語で書いてみたりして、練習してたんですが。

「3の倍数」「5の倍数」・・・最近お笑い番組で出てる、
世界のナベアツ」のネタって、確かそんなネタだったような(^^;)

と思って、世界のナベアツ fizz buzzで検索してみると、

(^^;) やはり同じことを考えている人がいるもんですね。

というわけで、彼の持ちネタの1つ「3の倍数と3がつく数字のときアホになり、8の倍数のとき
気持ちよくなる」を、VBAとExcelのワークシート関数で作ってみました。

まず、VBAバージョン。

Sub test()
Dim i As Integer
For i = 1 To 40
    Debug.Print i;

    If i Mod 3 = 0 Or InStr(Str(i), "3") <> 0 Then

        Debug.Print "~~~";

    End If

    If i Mod 8 = 0 Then

        Debug.Print "ぅぅういえぇえあ";

    End If

    Debug.Print

Next

End Sub

イミディエイトウィンドウに表示するだけのものです。
語尾につける文字列は、こちらのサイトを参考にさせていただきました。

実行してみます。

69-1

ん、ネタそのまま(^^;)

つぎはワークシート関数で。
A1~A40に1から40の値を入れておき、B1に以下の計算式を入れます。

 
 

=A1 & IF(MOD(A1,3)=0,"~~~",IF(ISERROR(FIND("3",A1)),"","~~~")) & IF(MOD(A1,8)=0,"ぅぅういえぇえあ","")
 
 

で、A1の計算式をA2~A40までコピーすると、

69-3.jpg

ん、こちらもOK(^^;)

「3のつく数字」を探す際のFINDワークシート関数の扱いがちょっと分かりにくかったです。
探して見つからなかった場合、#VALUE!というエラーになってしまうので、
ISERROR関数を使ってFIND関数の値を調べ、

エラーだったら(つまり3がつかなかったら)何も表示しない、
そうでなければアホになる。

という感じですね。

あと、VBAのMODとワークシートのMODの記述の仕方が違うんですね(^^;)

VBA・・・5 mod 3→2
ワークシート関数・・MOD(5,3)→2

これもこんがらがっちゃいました(^^;)

こちらにおいておきます→vbastudy_0008.xls

© 2011 simple blog いろいろ勉強中 Suffusion theme by Sayontan Sinha