半休対応の泥沼
胃の奥が鉛のように重くなる感覚を、今でも鮮明に覚えています。苦労して完成させたはずの勤怠自動化マクロが、たった一つの「半休」という例外データによって木っ端微塵に破壊されてしまったのです。通常出勤のロジックは完璧に動いており、皆さんに絶賛していただいたのですが、現場から「昨日の午後休のデータがおかしい」と連絡を受けた瞬間、すべての歯車が狂い始めました。

コードを開いて修正を試み、半休用のIF文を継ぎ足してみました。すると今度は、普通に出勤した方の打刻データまでエラーを吐き出すようになったのです。既存のVBAコードに「半休」の条件を後付けで追加したところ、End Ifの位置がずれてしまい、すべてのループ処理が無限ループに陥ってしまいました。直しては壊れ、直しては壊れの繰り返しで、原因特定だけで定時をとうに過ぎてしまいました。
書かれてない」を許さぬシステム
結果として、コードの全面書き直しを余儀なくされました。土日を挟んだ3日間、業務時間のすべてをこの「半休対応」という泥沼に溶かしたのです。疲れ果てた頭で帰りの電車に揺られながら、ふと気づいたことがあります。自分の技術力が足りなかったから失敗したのではなく、現場で起こりうる「例外パターン」を事前にまったく把握していなかったのです。あの3日間の地獄は、コードを打ち始める前の段階で既に運命づけられていたのだと感じました。
システムは、書かれていないことは絶対に処理できません。人間の脳内にある「これくらい分かるだろう」という甘えを、容赦なく突きつけてくるのです。
業務効率化の罠:コーディング先行
業務効率化に目覚めた会社員が、最も陥りやすい落とし穴があります。それは、要件を聞いた直後にいきなりVBE(Visual Basic Editor)やPythonのIDEを開いてしまうことです。真っ白なエディタ画面を前にすると、人間の思考は恐ろしいほど視野が狭くなり、目の前の「正常に動くハッピーパス」しか想像できなくなってしまうのです。

次に、A列の値をB列に転記する、空白ならスキップするといった作業ならスラスラとコードが書けるかもしれません。しかし、現実の業務はそんなに単純なものではありません。VBEの画面上で「ElseIf」の条件を考えているうちに、「もし空白なら……いや、文字列が入っていたら……」と処理を分岐させていると、自分が今どの階層のループにいるのか完全に分からなくなります。結局、紙に書き出さないと構造が理解できず、書いたコードを全消しする羽目になるのです。
コードと要件、同時思考の過ち
コードの構文を考えながら、同時に業務の例外パターンをひねり出すことは、非エンジニアの限られた脳内メモリを瞬時にパンクさせる行為です。「どう書くか(プログラミング)」と「何を書くか(業務要件)」という全く別の作業を同時に処理しようとしているから破綻してしまうのです。
コードを書きながら例外を思いつくのは、家を建てながら間取りを考えているのと同じです。「あ、ここにドアがないと不便だ」と柱を削り始めれば、家全体が倒壊するのは火を見るより明らかでしょう。例外ケースを見落とす根本的な原因は、決して想像力の欠如ではありません。「コードを書きながら考える」というアプローチそのものが、少し無理のある方法だったのです。
非エンジニア最強の防具「分類一覧表
一方で、この構造的な失敗を回避するための解決策は、驚くほどシンプルです。エディタを開く前に、慣れ親しんだExcelを起動し、たった3列の表を作ってみてください。用意するのは「パターン名」「条件(何が起きたか)」「処理(どうすべきか)」という見出しだけです。私はこれを「分類一覧表」と呼んでいます。

プロのシステムエンジニアは、開発の初期段階で必ず「要件定義」や「仕様書」を作成し、どんなデータが入ってくるか、どんな例外があるかを網羅します。しかし、我々のような独学の会社員に、分厚い仕様書を書く時間も技術もありません。だからこそ、Excelの表1枚にそのエッセンスを圧縮するのです。
非エンジニアの最強防具:表で例外撲滅
表形式にすることで、頭の使い方が劇的に変わります。コードの文法を気にする必要がないため、「現場でどんな変なデータが入力されるか」という悪魔的な想像に100%の脳力を注ぐことができます。空白だったらどうするか、全角カナが混じっていたらどうするか、規定のフォーマットとは違う古いExcelファイルが送られてきたらどうするか。セルを埋めるという行為が、例外パターンを洗い出すゲームに変わるのです。
Excelの行を追加するだけなら、どれだけ例外が思い浮かんでもシステムの土台が崩れることはありません。この3列表は、非エンジニアが自分の身を守るための最強の防具になります。コードより先に例外パターンを全部洗い出す表を作る——たったこれだけの習慣で、仕様漏れによる手戻りは嘘のように消え去ります。
VBA・Pythonをもっと本格的に学ぶなら
VBAやPythonを実務レベルまで引き上げたい方には「侍エンジニア」がおすすめです。マンツーマン指導・オーダーメイドカリキュラムで、文系出身でも挫折しにくい環境が整っています。無料カウンセリングだけでも学習ロードマップが明確になります。
勤怠の地獄を回避する例外洗い出し
かつて私を地獄の底に突き落とした「勤怠管理」を例に、実際の分類一覧表をどう作るかを見ていきましょう。まずは通常出勤以外に、どんな例外があるかをひたすら書き出していきます。

有休(全日)、欠勤(全日)、遅刻、早退——ここまでは誰でもすぐに思いつきます。しかし、現場の人間はシステム開発者の想像を遥かに超える行動をとるものです。半休(前半)を取得した上で午後の出勤時間にさらに遅刻してくる方、特別休暇と有休を組み合わせて申請してくる方、打刻を忘れて手書きのメモだけを提出してくる方など、様々なケースが考えられます。
これらをすべて表の「パターン名」に書き出し、次に「条件」列を埋めていきます。たとえば「半休+遅刻」なら、条件は「出勤打刻が13時以降。かつ半休フラグが1」となります。最後に「処理」列です。ここでは「遅刻控除時間を計算し、半休消化日数を0.5加算する」と日本語で具体的に書くようにしましょう。
現場の声が示す例外洗い出しの価値
現場の総務担当者にこの分類表を見せたところ、「あ、電車遅延で午前半休が取り消しになったケースも書いておいて」とあっさり言われました。もしコードを書き上げた後にそれを言われていたら、怒りでキーボードを破壊していたかもしれません。表の段階で気づけたおかげで、行を1つ追加するだけで事なきを得ることができました。
あの3日間の半休対応の悲劇は、「半休+遅刻」や「半休+早退」の組み合わせを全く想定していなかったために起きたのです。もし事前にこの表を作り、現場とすり合わせを行っていれば、あんな無駄な残業は1秒も発生しなかったはずです。例外を洗い出す作業は、コードを書くことよりも遥かに価値があるといえるでしょう。
表からコードへの写経
さらに、分類一覧表が完成したら、いよいよエディタを開きます。ここから先の作業は、もはや「プログラミング」とは呼ばないかもしれません。単なる「翻訳作業」です。表の内容を、プログラム言語の文法に従って置き換えていくだけの単純作業に変わるからです。

表の各行は、そのままVBAのIF文やSelect Case文の条件分岐に対応させます。「条件」列に書かれた日本語をコードの条件式に書き換え、「処理」列に書かれた手順をIf〜Thenの間に記述していきます。表が完璧に出来上がっていれば、コードを書く過程で「ここでこんなデータが来たらどうしよう」と悩む必要は一切なくなります。頭を使わずに、無心でキーボードを叩き続けることができるのです。
Select Case:複雑条件の視認性向上と高速化
特にVBAの場合、複数の条件が複雑に絡み合うときは、IF文のネスト(入れ子)を深くするよりも、Select Case文を使うと視認性が劇的に向上します。条件列の項目を評価対象にして、パターンごとにCaseを分けていくのです。まるでExcelの表をそのままエディタ上に再現しているかのような感覚に陥ることでしょう。
この手順は、開発スピードを飛躍的に高めてくれます。バグが出た時の原因究明も容易です。コードが間違っているのか、それとも表に書いた仕様自体が間違っていたのか、問題の切り分けが瞬時に行えるからです。エラー画面を前にして途方に暮れていた過去の自分に、真っ先に教えたい技術です。
Excelで作る、非エンジニアの堅牢プログラミング
業務効率化のためのプログラミングは、高度なアルゴリズムを書くことではありません。泥臭く、人間臭い「例外」たちをいかに漏れなく拾い上げるかの戦いです。非エンジニアである我々が、プロと同じ土俵で戦うための武器が、この3列のExcel表なのです。

もう二度と、いきなりエディタを開いてはいけません。どんなに小さなマクロでも、必ず表を作る習慣をつけましょう。パターンを洗い出し、条件を言語化し、処理を決める。このプロセスを踏むだけで、あなたの書くコードの堅牢性は見違えるほど高まるはずです。要件定義という言葉の重圧に負ける必要はありません。目の前のExcelシートに、思いつく限りの「嫌な予感」を書き出すだけで十分なのです。
Excelで作る、非エンジニアの堅牢プログラミング(続き)
次に、📘 このスキルを活かしてさらに前へ進むならVBAやExcelマクロをもっと体系的に学びたい方には、実務向けの技術書で基礎を固めるのも有効な手段です。Amazonでは「Excel VBA 自動化」に関する評価の高い書籍が豊富に揃っています。VBA・Excelマクロの技術書(Amazon) → 📘 このスキルを活かしてさらに前へ進むならAIを使ったプログラミングをゼロから体系的に学びたい方には、生成AIプログラミングの教科書『大蔵~TAIZO~』がおすすめです。ChatGPTやClaude等の生成AIと組み合わせた実践的なコーディング手法を習得できます。生成AIプログラミングの教科書『大蔵~TAIZO~』 →
関連リンクとチェックリスト
無料プレゼント
Excel業務を自動化する前に確認するチェックリスト(PDF)
自動化していい作業かどうか、VBAかPythonか、最初に避けるべき落とし穴。実務でよく迷うポイントを1枚にまとめました。メールアドレスだけで受け取れます。
無料でチェックリストを受け取る¥980 ミニキット
コピペで動かせる3スクリプト+自動化チェックリスト
最新ファイルの自動選択・部署名ゆれの正規化・CSV文字コード確認の3本セット。今週の作業を1つだけ楽にするための最小キットです。
ミニキットを見る(¥980)著者はこうして解決の糸口を見つけた
著者も同じ境遇から始まりました。独学でここまで自動化した道のりを参考にしてみてください。
関連書籍
Excel・VBA関連書籍を、手元で見返せる形にしておきたい場合
ExcelやVBAのトラブルは、基本の考え方をあとから見返せるだけでかなり楽になります。手元に1冊置いておくと、同じエラーで止まったときに確認しやすいです。
学習サービスとアンケート
このスキルを活かしてさらに前へ進むなら
Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。

