*当ブログではアフェリエイト広告を利用しています。

VBA

【VBA】VBAでFizzBuzzをやってみる。配列の速さも検証。

momeq
モー
モー

今回は、VBAで有名なFizzBuzz問題をやって見たいと思います。

FizzBuzz問題とは?
英語圏で使われる有名な言葉遊び。
プログラミングでは、ループと条件分岐を使用するため、基本的な問題として使われる。1から順番に数字を数えていき、3の倍数で「Fizz」、5の倍数で「Buzz」、3と5の倍数のときに「FizzBuzz」に変えます。

(例)1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16,・・・
ニャー
ニャー

今回は、FizzBuzzを1万行やってみるにゃ。また、速度も測定して、1行ずつセル入力する場合と、配列で一括入力の場合を比べてみるにゃ。

この記事は・・・

  • 「FizzBuzz問題」を知りたい人
  • VBAでループと条件分岐を使いたい人
  • 配列での一括入力の速度を知りたい人

にお勧めです。

【GAS】GASで有名なFizzBuzzを解いてみた。実行速度も計測!

実際のコード

一行ずつ実行するコード

Sub sample()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    Dim ary(10000)
    startTime = Timer
    For i = 1 To 10000
        If i Mod 3 = 0 And i Mod 5 = 0 Then
            ws.Cells(i, 1) = "FizzBuzz"
        ElseIf i Mod 3 = 0 Then
            ws.Cells(i, 1) = "Fizz"
        ElseIf i Mod 5 = 0 Then
            ws.Cells(i, 1) = "Buzz"
        Else
            ws.Cells(i, 1) = i
        End If
    Next
    endTime = Timer
    Debug.Print endTime - startTime
End Sub
>> 0.234375 
ニャー
ニャー

1万行だと大体0.23秒程度だにゃ。

配列で一括入力のコード

Sub sample()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    Dim ary(10000)
    startTime = Timer
    For i = 0 To 10000
        If i Mod 3 = 0 And i Mod 5 = 0 Then
            ary(i) = "FizzBuzz"
        ElseIf i Mod 3 = 0 Then
            ary(i) = "Fizz"
        ElseIf i Mod 5 = 0 Then
            ary(i) = "Buzz"
        Else
            ary(i) = i
        End If
    Next
    ws.Range("A1:A10000") = WorksheetFunction.Transpose(ary)
    endTime = Timer
    Debug.Print endTime - startTime
End Sub
>> 0.046875 
モー
モー

0.046秒程度。一行ずつ実行するよりもかなり早いですね。

配列で速度が速くなる理由

モー
モー

配列を使うと実行速度が速くなります。その理由は、セル入力回数が少ないことが理由です。

1万行のセル入力の場合・・・

  • 一行ずつ実行 → 1万回の入力が必要
  • 配列で一括実行 → 1回の入力で終了
ニャー
ニャー

VBAで速度の影響が出やすいのがセル入力だにゃ。セル入力が遅いから実行速度全体が遅くなるのにゃ。

モー
モー

配列を使用すると、ボトルネックのセル入力回数を少なくできるので、速度上昇が期待できますね。

【GAS】GASで有名なFizzBuzzを解いてみた。実行速度も計測!

プログラミングを学ぶならTechAcademy(テックアカデミー)がおすすめ!

TechAcademy [テックアカデミー]

モー
モー

独学で苦戦している人は、一度しっかりと基礎を学ぶと次のステップへ進めますよ。今のおすすめは、TechAcademy(テックアカデミー)ですね。

TechAcademyのおすすめポイント
  • オンラインで選抜された現役エンジニアから学ぶことができる
  • 自宅からWeb制作・プログラミング・アプリ開発など幅広い分野を学べる
  • 学ぶだけではなく、転職の支援、副業に活かせるスキルの習得、副業の仕事紹介まで行っている
ニャー
ニャー

無料体験や相談もあるから、一度試してみてもいいんだにゃ!

\無料体験、無料相談はこちらから/



記事URLをコピーしました