1. ホーム
  2. ブログ
  3. Excel自動化|関数とマクロの使い分け

Excel自動化|関数とマクロの使い分け

Excelの業務改善で必ず出てくる分岐が、「関数で組むか、マクロ(VBA)で組むか」です。

技術記事だと機能比較で語られることが多いのですが、中小企業の現場では判断軸が違います。大事なのは何ができるかではなく、作った人がいなくなっても、そのファイルが動き続けるかです。

判断軸は「誰が直せるか」

道具を、直せる人の範囲で並べるとこうなります。

道具直せる人壊れたときの影響
数式・関数Excelを使える人なら大体セル単位で済むことが多い
テーブル+Power Query教われば社内で直せる更新が止まる。原因は追いやすい
VBA(マクロ)書いた人か、書ける人止まると誰も直せないことがある

VBAが悪いという話ではありません。私自身、VBAで業務を組むことは多いです。ただしVBAで書いた部分は、その会社にとって「触れない箱」になるという前提を持っておく必要があります。

線の引き方

私が実際に使っている目安です。

関数で済ませる部分

  • 1枚のシートの中で完結する計算
  • 表引き(XLOOKUP / VLOOKUP
  • 条件分岐、集計(SUMIFS / COUNTIFS
  • 「このセルの値を変えたら結果が変わる」形で説明できること

ここは徹底的に関数でやります。社員の方が中身を追えるからです。あとから「この数字どこから来てるの?」と聞かれたときに、セルをクリックすれば答えが見えるのは大きな価値です。

Power Queryにする部分

  • 毎月同じ形のCSVを取り込む
  • 複数のファイルを縦につなげる
  • 列の分割・型変換・不要行の削除

「決まった形のデータを、決まった形に整える」作業はここが一番向いています。手順が画面に残るので、あとから見て何をしているか分かる。VBAで同じことを書くより、引き継ぎがはるかに楽です。

Power Queryは「難しそう」と敬遠されがちですが、実際に社員の方に触ってもらうと、ステップが縦に並んでいる分だけVBAより理解されます。

VBAにする部分

  • 複数のブック・アプリをまたぐ操作
  • メール送信、PDF出力、印刷
  • 分岐が多くて関数では読めなくなる処理
  • ボタン一つで一連の流れを実行したいとき

ここは素直にVBAで書きます。ただし条件を付けます。

VBAで書くときの3つのルール

1. 設定値をコードに直接書かない

フォルダのパス、担当者のメールアドレス、単価、しきい値。こうした「あとで変わるもの」は必ず設定シートに置き、コードはそこを読むだけにします。

これをやるかどうかで、その後の保守費用が変わります。宛先を1つ変えるのにコードを開かなければならない仕組みは、変更のたびに外部(私たち)に依頼が必要になる。それは会社にとって不健全です。

2. どこで止まったか分かるようにする

処理の途中で止まったとき、「エラーが出ました」だけでは誰も対応できません。

  • どの工程で止まったか
  • どのファイル・どの行を処理していたか

この2つをログとして残すだけで、電話一本で状況が分かるようになります。

3. 何をしているかをコードの外に書く

コード内のコメントではなく、シート上に処理の流れを1枚書いておく。「①CSV読込 → ②突合 → ③集計 → ④PDF出力」程度で十分です。中を読めない人でも、どこまで進んで止まったかが分かります。

引き継ぎ範囲は、作る前に決める

これが一番言いたいことです。

「顧客が自分で変更できる範囲」は、設計段階で決めないと後から変えられません。全体をVBAで組んでしまったあとに「ここは触れるようにしましょう」とは言えないからです。

だから着手前に、こう分けます。

  • 御社が自分で変える部分 … 設定シート、単価表、宛先リスト、テンプレート
  • 私たちが変える部分 … 処理のロジック、外部との連携

この線を引いてから作り始める。線が引かれていれば、日々の細かい変更で毎回外部に依頼する必要がなくなります。保守の範囲も明確になり、「どこまでが契約内か」で揉めることもなくなります。

まとめ

  • 判断軸は機能ではなく「誰が直せるか」
  • 説明できるものは関数、決まった整形はPower Query、またぐ処理はVBA
  • VBAを使うなら、設定値を必ず外に出す
  • 触れる範囲・触れない範囲は、作り始める前に決める

自動化は、速く動くものを作ることではありません。来年も再来年も動き続けるものを作ることです。


既にあるExcelファイルを見て「これは関数のままでいい」「ここはPower Queryにしたほうがいい」と整理するところからでもお受けしています。

#Excel#VBA#Power Query

この記事について

SUPRAXは、林業・製造・運送の現場経験をもとに、中小企業の業務改善・AI活用・GISの支援を行っています。 記事の内容について「うちの場合はどうか」を聞きたい方は、無料相談をご利用ください。

無料で相談してみる

あわせて読みたい

AVERAGEIFS関数の使い方|条件に合う行だけの平均

「A社の平均単価はいくらか」「9月の1件あたりの平均金額は」。 合計や件数は出せても、平均になると急に自信がなくなるという声をよく聞きます。理由は関数の…

記事一覧へ戻る