税理士業務でExcelマクロをちょくちょく使っていますがこのExcelマクロの技術的な項目?考え方?の一つに「配列」という考え方があります。
税理士業務でExcelマクロを利用する際に「配列」という考え方の理解が絶対必要なものなのかどうか、個人的な見解を整理しておこうと思います。
結論、配列の理解は不要と考えています。
配列を使用するとマクロの処理速度が早くなるそうです。
一般的に配列を使用してExcelマクロを作成すると処理速度が速くなるということが言われています。
はたして本当にそうなのか、具体的に見てもらう方が早いと思ったので会計データのようなデータを約1,000件適当に準備してみました。こちらになります↓
こんな感じで1000件くらい用意しておきました。
今回、このデータを「同じシートの別の場所に転記するというExcelマクロ」を2つ作成してみました。
一つ目のExcelマクロは配列を使用して転記するようにしているもので、二つ目のマクロはセルのデータを一つずつ直接転記するものにして作ってみました。
こちらが「配列」を使用して作ったマクロ↓
Sub test_array()
'配列に格納→転記
Dim my_array() As Variant
Dim cnt As Long
Dim i As Long
Dim j As Long
Debug.Print Timer & "-処理開始"
cnt = WorksheetFunction.CountA(Range(Range("b2"), Range("b2").End(xlDown))) - 1
'配列の要素数の決定
ReDim my_array(cnt, 7)
'処理実行部分(配列にデータ格納)
For i = 0 To cnt
For j = 0 To 7
my_array(i, j) = Cells(i + 2, j + 2).Value
Next j
Next i
'配列のデータをセルに転記する
Range(Range("k2"), Range("k2").Offset(cnt, 7)).Value = my_array
Debug.Print Timer & "-処理終了"
MsgBox "done"
End Sub
こちらが一つずつ転記していくマクロ(For~Nextステートメントを使用しています)↓
Sub direct()
'直接転記
Dim cnt As Long
Dim i As Long
Dim j As Long
Debug.Print Timer & "-処理開始"
cnt = WorksheetFunction.CountA(Range(Range("b2"), Range("b2").End(xlDown))) - 1
'処理実行部分
For i = 0 To cnt
For j = 0 To 7
Cells(i + 2, j + 11) = Cells(i + 2, j + 2).Value
Next j
Next i
Debug.Print Timer & "-処理終了"
MsgBox "done"
End Sub
配列による一括転記とFor~Nextによる繰りかえし転記処理の実行時間はどのくらい違うのか検証してみた。
上記の2つのマクロを実際に実行してみた動画が下記になります↓
それぞれ2回ずつ転記の処理を繰り返してみましたが、動画では配列による一括転記のほうが処理が早く終了するのが直感的にもわかるかと思います。
実際に処理の速度を計測してみたところ「配列」を使用したマクロが0.2秒程度で↓
For~Nextステートメントを使用して繰りかえし転記するマクロが4秒かからない程度です↓
結果として「配列」によるマクロのほうが処理が早いという結果になりました。
ですが、その差は約3秒ちょっと。
この結果をどのように捉えるかによってExcelマクロを使う際に配列の理解が必要がどうかがわかれてきそうです。
税理士業務で数千件のデータを扱うことがあるのかどうか。
今回は説明用に分かりやすく1000行のデータを作成しましたが、現実的に税理士業務で1000行のデータを扱うことがあるのかと言うと、そういった状況はそんなにないのかなと感じています。
Excelマクロを使用する一番の目的はデータを加工して会計ソフトへインポートするためです。
そしてこの前提に立った時に一度に1000行単位、またはそれ以上の数のデータをインポートするというのは相当規模の大きな会社ではないかと考えています(単純に取引の数が1000個以上あるということになりますので)
こういったことから実務上、一度に1000個以上のデータを使うというシチュエーションは稀で、よくある状況としてはせいぜい100~200件程度のデータなのではないでしょうか
そして、100件から200件単位のデータ数であれば今回のように配列を使用しても使用しなくても処理の実行速度に大きな差は出てこないはずです。
おそらく1秒程度の差ではないかと予想されます。
であれば、配列の理解に時間をかける必要はない。というのが記事作成時点での見解です。
なので、配列の理解がなくても税理士業務で使用するマクロは十分に作成することができると考えています。
まとめ
税理士業務でExcelマクロを使用する際に「配列」の理解が必要かどうかの個人的な見解を記事にしました。
結論としては税理士業務におけるExcelマクロにおいては配列の理解は不要。優先度は低いもの(できるに越したことはない程度。)と位置づけています。自分もよくわかっていませんし。
これからExcelマクロを税理士業務に取り入れようとしている方の参考になれば幸いです。
【本日の近況報告】
アマゾンフォトの利用で家族会員を招待。Googleフォトの無制限が撤廃されて無料で使用できる容量が圧迫されているようなので。
動画はやはり容量をとりますね。
【本日の1曲】
The Prisoners/Mrs Fothergill
「whenever i’m gone」という曲しか知らないこちらのバンド、プリゾナーズ。
久しぶりに思いだして、Spotifyでこちらのアルバムを聴いてみたんですが、いいアルバムでした。こちらの曲は全体に少しホラーな感じを纏い、凶暴なオルガンがさく裂するインスト曲。
モッズ、ガレージ系が好きなら気に入ること間違いなし。