【実務直結】「これ、重複消しといて」に即答!Dictionaryで実現するVBA高速リスト作成術 

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

「はぁ……またこの作業か。1万行もある顧客リストから重複を消してって言われても、目がチカチカするよ。Excelの標準機能だと、たまに動作が重くて固まるし……。もっとスマートに、一瞬で終わらせる方法はないのかな?」

職場で、こんな風に感じたことはありませんか?

私もかつて、目視と並べ替えで必死に重複チェックをしていた一人です。
1週間かけてリストを完成させたのに、後から 重複が見つかって、再チェックする羽目になる……という苦い経験も少なくありません。 

そんな私を救ってくれたのが、Excel VBAのDictionaryというテクニックでした。 

今回は、プログラミング初心者の方でもコピペで使える、重複削除術を紹介します。

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

標準機能の「重複の削除」では不十分な理由 

もちろん、Excelには「重複の削除」ボタンがあります。でも、実務では以下の壁にぶつかります。

  • 数万件規模のデータでは処理が追いつかず、フリーズのリスクがある。
  • 削除するだけでなく、抽出したデータをプログラム内でさらに活用したい。
  • 複数列の組み合わせなど、複雑な条件での抽出を行いたい。

Dictionaryを活用すれば、PCへの負荷を最小限に抑えつつ、超高速で処理が可能です。

3. 【コピペOK】今すぐ使える高速重複削除コード 

以下のコードをVBAのエディタに貼り付けるだけで、A列の重複を消してC列に書き出します。

Sub CreateUniqueList()
    Dim myDic As Object
    Set myDic = CreateObject("Scripting.Dictionary")
   
    Dim lastRow As Long
    Dim i As Long
    Dim targetValue As Variant
   
    ' A列の最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
   
    ' A列の2行目から順番にチェック
    For i = 2 To lastRow
        targetValue = Cells(i, 1).Value ' 今見ているセルの値

        If Not myDic.Exists(targetValue) Then
            myDic.Add targetValue, "" ' キーとして追加(値は空でOK)
        End If
    Next i
   
    ' C列に結果を書き出す(Keysが重複のないリスト本体)
    Dim myKeys As Variant
    myKeys = myDic.Keys
   
    For i = 0 To UBound(myKeys)
        Cells(i + 2, 3).Value = myKeys(i)
    Next i
   
    MsgBox "重複削除が完了しました!"
   
    ' 後片付け
    Set myDic = Nothing
End Sub

注意点

非常に便利なDictionaryですが、一つだけ注意点があります。

それは、英字の大文字と小文字を区別するという特性です。
例えば「Apple」と「apple」は、別のデータとして認識されます。 

実務でこれらを同一視したい場合は、事前にLCase関数などで小文字に統一してから格納するか、比較モードをテキスト比較に設定して対応することをお勧めします。 

まとめ

「Dictionary」をマスターすることは、バックオフィス業務において「手斧」を「チェーンソー」に持ち替えるようなものです。

最初はコードに難しさを感じるかもしれませんが、一度習得すれば業務効率は飛躍的に向上します。
ぜひ試してみてください!

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


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

この記事を書いた人
ぐー

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

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

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

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

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

コメント

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