mihajlovic's blog

わーい

「EXCEL VBA FIZZBUZZ」

EXCEL VBAFIZZBUZZ書いてみた。
ついでナベアツも書いてみた。
  →3のつく数字と3の倍数の時アホになり、5の倍数の時は犬になります

Sub FIZZBUZZ()

Dim I As Integer
Dim J As String

For I = 1 To 100
    J = I
    
' FIZZBUZZ
    If I Mod 15 = 0 Then
        Cells(I, 1).Value = "FIZZBUZZ"
    ElseIf I Mod 5 = 0 Then
        Cells(I, 1).Value = "BUZZ"
    ElseIf I Mod 3 = 0 Then
        Cells(I, 1).Value = "FIZZ"
    Else
        Cells(I, 1) = I
    End If
    
' NABEATU  3のつく数字と3の倍数の時アホになり、5の倍数の時は犬になります
    If I Mod 15 = 0 Then
        Cells(I, 2) = "アホになりながら、わお〜ん"
    ElseIf J Like "*3" Or J Like "3*" Or J Like "*3*" Or I Mod 3 = 0 Then
        Cells(I, 2) = "アホになる"
    ElseIf I Mod 5 = 0 Then
        Cells(I, 2) = "わお〜ん"
    Else
        Cells(I, 2) = I
    End If
        
Next

End Sub

実行すると、EXCELの1列目がFIZZBUZZ
2列目がナベアツになるはず。
3がつく数字の判定を、正規表現か、100・10で割った余りが"3"になるかで判定しようと思ったけど、
楽な方法で逃げた。




さらにちょっといじってみた。

Sub FIZZBUZZ2()

Dim K As Long
Dim I As Long
Dim J As Long
Dim C As Variant

C = Range(Cells(1, 1), Cells(1000, 256))
For I = 1 To 1000
    For K = 1 To 256
    J = I * K
' NABEATU  3のつく数字と3の倍数の時アホになり、5の倍数の時は犬になります
        If (I * K) Mod 15 = 0 Then
            C(I, K) = "アホになりながら、わお〜ん"
        ElseIf J Like "*3" Or J Like "3*" Or J Like "*3*" Or (I * K) Mod 3 = 0 Then
            C(I, K) = "アホになる"
            Cells(I, K).Interior.ColorIndex = 36    '模様がわかりやすくするために、色つける

        ElseIf I Mod 5 = 0 Then
            C(I, K) = "わお〜ん"
        Else
            C(I, K) = I * K
        End If
    Next
Next

Range(Cells(1, 1), Cells(1000, 256)).Value = C

End Sub

これを走らせたEXCELを縮小してみると、なんか模様ができるw
なので、ちょっと色をつけてみました。