0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

実務で使ったExcelチェックマクロ集まとめ(VBA)

Last updated at Posted at 2025-04-07

📦 GitHubはこちら → Excel業務効率化マクロ集

🔍 GitHubをご覧いただく際は、READMEの「構成」「処理フロー」および個別マクロのサンプルコード部分を中心に見ていただけると、流れが伝わりやすいと思います!

はじめに

このプロジェクトは実務での課題に直面したことをきっかけに、誰が使っても正確に処理できる仕組みを目指して設計しました。
本記事では、日々のExcel業務の中で感じていた「手間がかかる」「ミスが起きやすい」といった課題を解決するために、自作したVBAによる業務効率化マクロ集を紹介します。

こんな方に読んでもらえたら嬉しいです

  • 実務の中で「この作業、毎回しんどいな」と思ってる方
  • VBAで業務自動化って実際どうやってるの?って気になってる方
  • 自分でもVBAを書き始めたいけど、どこから手をつければいいか迷ってる方
  • 仕事の中で作ったツールをポートフォリオに活かしたい方

実務で使っていたマクロをポートフォリオ用に整理していますが、
処理の流れや構成に自分なりの工夫を入れているので、
特に「📊 マクロ全体の流れ」「📦 構成(マクロの流れと役割)」を見てもらえると嬉しいです。
また、設計や読みやすさの点で改善できそうな部分があれば、ぜひフィードバックいただきたいです!

役立つ場面

以下のような現場で、特に効果を発揮します:

  • 各部署やチームから提出されるフォーマットがバラバラなExcelファイルをまとめたいとき
  • 必須項目の抜け」「重複」「精神的コスト」など

作ろうと思った背景とVBAを選んだ理由

本プロジェクトは、日々のExcel業務における属人化やミス、精神的な負担を減らすことを目的にスタートしました。
特に以下のような課題が積み重なっていました

  • 複数部署から提出されるExcelのレイアウトや命名がバラバラ
  • チェック項目が毎回異なるため、都度手作業で対応する必要がある
  • 空白や不一致などの人為的ミスが頻発し、最終確認も目視に依存
  • 毎回の確認作業に時間と神経を消耗し、精神的な負担が大きかった

これらの問題に対し、自動化ツールを導入することを検討しましたが、
業務がすべてExcel上で完結していたことや、社内PCのインストール制限などの制約を踏まえると、追加環境の構築不要なVBAが最も現実的かつ導入しやすい選択肢でした。

工夫したこと・試行錯誤したポイント

本プロジェクトでは、業務にそのまま導入できる実用性を重視して設計・実装を行いました。

特に意識したのは、保守性・可読性・現場適応性の3点です:

  • 処理はサブルーチン単位で細かく機能分けし、後からの修正や機能追加がしやすい構成

  • コメントや処理の説明を丁寧に記述し、VBAに不慣れな方でも理解しやすいように配慮

  • 「管理ID」などのラベル位置が変わるケースや空白セルに対応するため、表構造の揺れに強いロジックを実装

  • 色塗りや入力制限の設定は、ミスを未然に防ぐための実務的なチューニングが必要で、試行錯誤を繰り返した点

  • 最終的に各マクロが連携して一つの業務フローとして動作する構成に仕上げるため、処理順の整合性や連携部分に特に注意を払った点

  • 試行錯誤を重ねながら、最終的にすべてのマクロを連携させて一つの業務フローとして完成できたときは、実際の現場で動かせた達成感と、「あ、自分でもこういう仕組みが作れるんだ」と思えた喜びがありました。

解決のために作ったこと

こうした課題に対応するため、以下のような「汎用チェック用マクロ」をVBAで作成しました

  • ファイルの整形・統合処理を一括自動化
  • 指定した列同士を比較し、不一致を赤塗り+リスト出力
  • 空白・重複・部署不一致などの人為ミスを検出
  • 色付けや入力制限などで誤操作を未然に防止

マクロ全体の構成と処理フロー

  1. Excelファイルをエクスポート
  2. フォルダに格納し、ファイル名を統一
  3. マクロで各ファイルを読み込み、1つに統合
  4. 項目の並べ替え・不要列削除
  5. 「要否フラグ」の追加
  6. 部署情報をもとに色付け
  7. チェックマクロで〇×判定
  8. 不一致を抽出し、別シートに出力

構成(マクロの流れと役割)

各マクロの役割や実行タイミングは以下の通りです。


🟢 ProcessSheets(最初に実行)

  • 役割:必要な列を抽出・整形し、統合シートを作成
  • 補足:入力制限や色付けの設定もこのマクロで自動処理されます

🟡 checkMacro(中間チェック)

  • 役割:任意の2シートの指定列を比較し、不一致を赤塗り&別シートに出力
  • 補足:「一旦ここまででチェックしたい」ときに使います

🔵 compareTasks_decisionFlag(項目内容の一致確認)

  • 役割:統合シートと別シート間の重要項目の一致をチェック
  • 補足:意思決定に使うようなフラグ項目などに特化してます

🟡 compareTasksColumns(中間チェック)

  • 役割:任意列を比較し、不一致があれば赤塗り&詳細出力
  • 補足:差異の可視化やトラブルの早期発見に便利

🔴 Lastcheckfiles_macrosheet(最終チェック:権限・連絡先)

  • 役割:参照シートと他シート間で、役割・連絡先などの整合性を確認
  • 補足:提出前の最終確認・整合性チェックに使います

制作を通して学んだこと・つまずいた点

最初は少ないルーチンで処理を回していましたが、VBAではエラーの原因特定が難しく、
「どこで落ちてるのか分からない地獄」に何度も突入しました。

そこから、処理をサブルーチン単位で細かく整理するように変更。
結果として、保守性・再利用性が大幅に改善され、「あとから直すのが怖くないコード」になっていきました。


業務に即したロジックの組み込みでも、想像以上に苦労しました。
たとえば:

  • 色判定や入力制限、セルのグループ化
    → 条件が多く、細かい調整が必要
  • 「管理ID」など特定ラベルをヘッダーから探す処理
    → 書式の揺れや空白セルに苦しめられる
  • 文字列が数字なのか文字なのか判別がつかない問題
    Findやループ処理での探索がややこしくなりがち

VBA自体はシンプルな言語ですが、実際に感じたのは
“作れること”よりも“現場で使えること”のほうがずっと難しいという点でした。

特に今回のマクロでは、以下のような「Excelあるある」に真正面からぶつかる必要がありました:

  • 提出フォーマットがバラバラ(行や列のズレ)
  • 書式が微妙に違う(全角・半角、空白、結合セルなど)
  • 部署ごとに例外ルールがある(地味にめんどい)
  • 「3行目に項目がある」などの固定前提が通じない

そのため今回は、“理想じゃないリアル”に合わせて動く設計が必要不可欠でした。
具体的には以下のような工夫をしています:

  • ラベル名を手がかりに、位置を動的に特定する
  • 空白セルや結合セルにも対応する柔軟な探索ロジック
  • 書式揺れを検出しやすくするよう比較処理を設計
  • チェック項目ごとの例外処理をサブルーチン単位で分割

正直、一番時間を使ったのは「フォーマットの揺れ」にどう対応するか。
でも、ここを乗り越えたことで、どんな現場でもある程度対応できる**“再現性と汎用性”**を実現できたと感じています。

最後に

ここまで読んでいただきありがとうございます!
もし「こうすればもっと使いやすくなる」や「ここ読みにくいかも」といったご意見があれば、ぜひコメントで教えてください!

  • 「構成・読みやすさ・実用性」の観点でアドバイスもらえると嬉しいです!
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?