【VBA】VBAでのデータ管理: 配列の力を理解する
momeq
muchi-no-chi
*当ブログではアフェリエイト広告を利用しています。
今回は、VBAで有名なFizzBuzz問題をやって見たいと思います。
今回は、FizzBuzzを1万行やってみるにゃ。また、速度も測定して、1行ずつセル入力する場合と、配列で一括入力の場合を比べてみるにゃ。
この記事は・・・
にお勧めです。
【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万行のセル入力の場合・・・
VBAで速度の影響が出やすいのがセル入力だにゃ。セル入力が遅いから実行速度全体が遅くなるのにゃ。
配列を使用すると、ボトルネックのセル入力回数を少なくできるので、速度上昇が期待できますね。
【GAS】GASで有名なFizzBuzzを解いてみた。実行速度も計測!
独学で苦戦している人は、一度しっかりと基礎を学ぶと次のステップへ進めますよ。今のおすすめは、TechAcademy(テックアカデミー)ですね。
無料体験や相談もあるから、一度試してみてもいいんだにゃ!
\無料体験、無料相談はこちらから/