VBAの配列ソートで消耗してない?「ArrayList」を使った最短で配列を並び替えるテクニック

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

「 配列の中身をあいうえお順に並び替えたいだけなのに、なんでこんなにコードが長くなるの…?」

私もVBAを学び始めたばかりの頃、同じように悩んでいた時期がありました。

インターネットで「VBA 配列 ソート」と検索すると、For…Next構文が何重にも重なった「バブルソート」や「クイックソート」といった、複雑で長い解説ばかりが見つかります。

仕方ない、これを書き写そう…!」と腹を括り挑戦したものの、途中でループ変数の管理が複雑になり、混乱してしまいました。結果として、1時間の作業時間を短縮するつもりが、コードの修正に2時間も費やしてしまうという、本末転倒な失敗を何度も経験したものです。 

でも、安心してください。そんな「苦行」はもう不要です。

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

ArrayListは自動で並べ替えを行う便利なオブジェクト

実はWindowsには、ArrayList(アレイリスト)という、データを管理するための非常に便利な「箱」が元々用意されています。

これは、プロのエンジニアが開発で広く利用している「.NET Framework」という強力な環境の一部です。

難しい理論は省略しますが、この仕組みの優れた点は、バラバラに格納したデータを「.Sort」という命令一つで、一瞬にして整列できる自動整理機能を備えていることです。 

【コピペで使える】ArrayListを活用したソートのサンプルコード

それでは、実際に実務で活用できる具体的なコードをご紹介します。

Sub SmartSortExample()
' 1. 「ArrayList」オブジェクトを生成します
    Dim myList As Object
    Set myList = CreateObject("System.Collections.ArrayList")

    ' 2. データを箱の中に入れます(例:バラバラな果物リスト)
    myList.Add "バナナ"
    myList.Add "リンゴ"
    myList.Add "イチゴ"
    myList.Add "メロン"

    ' 3. 並び替えを実行
    myList.Sort

' 4. 降順に並べ替えたい場合は、以下を有効にします
    ' myList.Reverse

' 5. 結果をイミディエイトウィンドウに表示します
    Dim item As Variant
    For Each item In myList
        Debug.Print item
    Next item

    ' 後片付け
    Set myList = Nothing
End Sub

このコードのポイント

一般的なバブルソートと呼ばれる手法で記述すると、コードは30行から50行ほどになり、構造の理解も難しくなります。

一方、このArrayListを活用すれば、実質的にわずか3行(オブジェクトの生成、データの追加、ソートの実行)で完了します。 これなら簡単ですよね。

さらに、コードの作成やメンテナンスが容易になるだけでなく、処理速度の大幅な向上も期待できます!

使う時の注意点

このArrayListはWindowsの機能を使っているため、Mac版のExcelでは動作しません
もしWindowsを使っているなら、これを使わない手はありません!

また、ごく稀にPC側で「.NET Framework 3.5」 の有効化設定が必要となるケースがありますが、最近のWindows 10や11であれば、ほとんどの環境でそのまま動きます。

まとめ

「プログラミングは難しい」と思われがちですが、大切なのは「すでに用意されている便利な道具」をいかに見つけ、どのように組み合わせるかという点にあります。

それこそが、実務の現場で強く求められる実践的なスキルと言えるでしょう。

日々の業務効率化に、ぜひお役立てください!

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


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

この記事を書いた人
ぐー

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

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

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

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

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

コメント

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