「Excelが固まる…」を卒業!2次元配列をマスターして処理速度を100倍にする方法

【業務効率化】VBA
スポンサーリンク

「はぁ……またExcelが『応答なし』になっちゃった。1万行のデータをコピペするだけで、どうしてこんなに時間がかかるの?」

大量の請求データや顧客リストの処理に、日々頭を悩ませてはいませんか?
実はその悩みは、「2次元配列」という技術を活用することで、一瞬で解決できるかもしれません。 

今回は、初心者が壁を感じやすい一方で、習得すれば劇的に効率が変わる「2次元配列」について、分かりやすく解説します。 

【業務効率化】VBAの記事を見る 

2次元配列は「住所がある多目的ロッカー」

プログラミングの世界で「配列」というのは、複数のデータを整理して格納するための「箱」のような存在です。 

普通の配列(1次元)が「横一列に並んだ靴箱」だとしたら、2次元配列は「縦にも横にも並んだ、マンションの郵便受け」をイメージすると分かりやすくなります。 

  • 1次元配列: 101号室、102号室、103号室……(横のつながりだけ)
  • 2次元配列: 1階の101号室、2階の201号室……(「階」と「部屋」の2つの数字で場所が決まる)

Excelのシートも「行」と「列」で場所が決まりますよね。
つまり、2次元配列とは「プログラムのメモリの中に作成する、目に見えない仮想のExcelシート」と言い換えることができます。 

なぜ2次元配列を使うと「爆速」になるのか?

鋭い方は「Excelのシートがあるなら、わざわざメモリの中に作る必要はないのでは?」と疑問に思うかもしれません。 

実は、VBAなどのプログラムがExcelの「セル」へ一回一回直接アクセスする動作は、人間がその都度席を立って紙に書き込みに行くような、非常に負荷のかかる作業なのです。

対して、2次元配列を用いたメモリ上での処理は、いわば「頭の中で思考する」ような速さで完結します。 

例えば、1万行のデータを1セルずつ書き換えて1分(60秒)かかる作業も、配列に一度読み込んで一括で処理を済ませれば、0.1秒以下という驚異的なスピードで完了することも珍しくありません。

失敗から学んだ経験:PCをフリーズさせてしまった新人時代

私もVBAを学びたての頃、「全セルをループで書き換えるマクロ」を作りました。
実行ボタンを押してしばらくすると、処理する量が多すぎたようで、画面は白く固まり、カーソルが回り続けるばかり。 「PC壊れた?」と心配したものです。

その時、役立ったのが2次元配列でした。
メモリ内で一括処理させる」という発想でコードを修正したところ、一瞬で作業が終わり、 感動したのを覚えています。

【コピペでOK】VBAで2次元配列を使ってみよう!

まずは一番身近なExcel VBAでの例です。シートの表を丸ごと配列に入れて、加工して戻すという流れです。

Sub ArrayExample()
    Dim dataArray As Variant
    Dim i As Long, j As Long
   
    ' 1. セル範囲(A1:B10)のデータを一気に「配列」という箱に入れる
    dataArray = Range("A1:B10").Value
   
    ' 2. 配列の中身をループで処理する(メモリ内なので一瞬)
    ' LBoundは最小の添字、UBoundは最大の添字のことです
    For i = LBound(dataArray, 1) To UBound(dataArray, 1) ' 行のループ
        For j = LBound(dataArray, 2) To UBound(dataArray, 2) ' 列のループ
           
            ' 例として、文字の後ろに「済」と付ける
            dataArray(i, j) = dataArray(i, j) & "済"
           
        Next j
    Next i
   
    ' 3. 最後に一気にシート(D1セル起点)に書き出す
    Range("D1").Resize(UBound(dataArray, 1), UBound(dataArray, 2)).Value = dataArray
   
    MsgBox "処理が完了しました!"
End Sub

まとめ:2次元配列は「効率化のチート技」

2次元配列を使いこなせると、以下のメリットがあります。

  1. 処理時間が劇的に短縮される
  2. Excelのフリーズを回避し、安定性が向上する 
  3. 大規模なデータセットもスムーズに扱えるようになる

最初は難しく感じるかもしれませんが、「表データをメモリに展開するための便利な箱」という理解から始めれば十分です。 少しずつコードを書いて、その圧倒的なスピードを体感してみてください!

【業務効率化】VBAの記事を見る 


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました