請求書の作成って、毎月地味に時間がかかりませんか?
会社名を手入力して、品名と単価を調べて、金額を電卓で計算して、PDFに保存して…と、やっていることは毎回ほぼ同じなのに、なぜかいつも時間がかかる。そのうえ、打ち間違いや計算ミスが起きると修正にまた時間がかかる。
実はこれ、Excelの関数とVBAを組み合わせるだけでほぼ自動化できます。顧客コードと品番を選ぶだけで、会社名・品名・単価・合計・消費税・支払期日がすべて自動で埋まる。発行ボタンを1つ押すだけで、PDF保存・履歴記録・フォームリセットまで一気に完了する——そんな仕組みが作れます。
この記事では、Excel初心者の方を対象に、請求書を自動化するしくみを順番に解説します。関数の意味から丁寧に説明しますので、「Excelはなんとなく使えるけど関数はほぼ知らない」という方でも大丈夫です。
まず完成形を見てみよう|こんな請求書が作れます
最初に完成形のイメージをお見せします。この請求書ファイルは次の4種類のシートで構成されています。
| シート名 | 役割 |
|---|---|
| 請求書 | 実際に入力・発行するメインシート |
| 顧客マスタ | 顧客コード・会社名・担当者名の一覧 |
| 商品マスタ | 品番・品名・単価の一覧 |
| 発行履歴・発行詳細履歴 | 発行するたびに自動で記録が蓄積されるシート |
完成した請求書シートでは、入力するのは「顧客コード」と「品番・数量」だけです。それ以外はすべて自動で埋まります。
具体的には次の流れで動きます。
- J2セルに顧客コード(例:C001)を入力 → 会社名・担当者名が自動で入力される
- 品番のセルでプルダウンから品番を選ぶ → 品名・単価が自動で入力される
- 数量を入力 → 金額・小計・消費税・合計金額が自動で計算される
- 支払期日が発行日から自動で算出される
- 「発行」ボタンを押す → PDF保存・請求番号の採番・履歴記録・フォームリセットが一気に完了する
では、この仕組みをどうやって作るのかを順番に解説します。
まずマスタシートを準備しよう|顧客マスタ・商品マスタ
関数を動かすためには、まず「参照元となるデータの一覧」を別シートに用意しておく必要があります。これを「マスタシート」と呼びます。
顧客マスタ
「顧客マスタ」シートのA〜C列に次のように入力します。
| A列:顧客コード | B列:会社名 | C列:担当者名 |
|---|---|---|
| C001 | 株式会社山田商事 | 山田 太郎 様 |
| C002 | 有限会社鈴木工業 | 鈴木 花子 様 |
| C003 | 田中コンサルティング株式会社 | 田中 一郎 様 |
取引先が増えたときはこのシートに行を追加するだけで、請求書シートにも自動で反映されます。
商品マスタ
「商品マスタ」シートのA〜C列に次のように入力します。
| A列:品番 | B列:品名 | C列:単価 |
|---|---|---|
| A001 | コンサルティングサービス | 50,000 |
| A002 | 資料作成代行 | 30,000 |
| A003 | システム設計支援 | 80,000 |
商品・サービスの内容や単価が変わった場合も、このシートを更新するだけで請求書に反映されます。
関数パート|入力・計算をすべて自動化する
マスタシートが準備できたら、請求書シートに関数を設定していきます。今回使う関数は次の5種類です。
| 関数名 | 何をする関数? | 請求書での使い方 |
|---|---|---|
| VLOOKUP | 別の表から値を検索して引っ張ってくる | 顧客コード→会社名・担当者名、品番→品名・単価の自動入力 |
| SUM | 指定した範囲の数値を合計する | 明細の金額を合計して小計を出す |
| ROUND | 指定した桁数で四捨五入する | 消費税の端数を処理する |
| EOMONTH | 指定した月数後の月末日を返す | 発行日から翌月末の支払期日を算出する |
| データの入力規則(プルダウン) | 選択肢をリストから選べるようにする | 品番を商品マスタから選ぶ |
① VLOOKUP|顧客コードから会社名・担当者名を自動入力する
VLOOKUPは「別の表から値を探してきてくれる」関数です。まず関数の書き方から確認しましょう。
=VLOOKUP(検索値, 範囲, 列番号, 検索方法)
今回の請求書では、J2セルに入力した顧客コードをもとに、会社名が入るセル(B4)に次の数式を入れます。
=VLOOKUP(J2,顧客マスタ!A:C,2,0)
引数の意味を分解すると次の通りです。
| 引数 | 今回の値 | 意味 |
|---|---|---|
| 検索値 | J2 | J2セルの顧客コードを検索キーにする |
| 範囲 | 顧客マスタ!A:C | 顧客マスタシートのA〜C列を検索対象にする |
| 列番号 | 2 | 範囲の2列目(B列=会社名)を返す |
| 検索方法 | 0 | 完全一致で検索する(必ず0を指定) |
担当者名のセルには列番号を 3 に変えた数式を入れます。
=VLOOKUP(J2,顧客マスタ!A:C,3,0)
これで顧客コードを1つ入力するだけで、会社名と担当者名が自動で入力されるようになります。
② データの入力規則(プルダウン)|品番を選ぶだけにする
品番を毎回手入力していると、打ち間違いが起きやすくなります。プルダウンリストを使えば、商品マスタにある品番だけを選べるようにできます。
設定手順は次の通りです。
- 品番を入力するセル(B14〜B23)を選択する
- メニューの「データ」→「データの入力規則」をクリック
- 「入力値の種類」を「リスト」に変更する
- 「元の値」に
=商品マスタ!A:Aと入力する - OKをクリック
設定後は品番のセルをクリックすると「▼」が表示され、商品マスタに登録した品番の一覧から選べるようになります。商品マスタに品番を追加すれば、プルダウンにも自動で反映されます。
③ VLOOKUP|品番から品名・単価を自動入力する
プルダウンで品番を選んだら、品名と単価もVLOOKUPで自動入力されるようにします。
品名が入るセル(C14)には次の数式を入れます。
=IF(B14="","",VLOOKUP(B14,商品マスタ!A:C,2,0))
単価が入るセル(D14)には列番号を 3 に変えます。
=IF(B14="","",VLOOKUP(B14,商品マスタ!A:C,3,0))
冒頭に IF(B14="","",... を加えているのは、品番が空のときに数式エラーが表示されないようにするためです。「B14が空なら空白を返す、そうでなければVLOOKUPの結果を返す」という意味になります。
この数式を14行目から23行目まで(最大10明細分)コピーしておけば、品番を選ぶたびに品名と単価が自動で入力されます。
④ SUM・ROUND|金額・小計・消費税・合計を自動計算する
品番と数量が入力されたら、金額列(E列)は単価×数量で自動計算します。
=IF(B14="","",D14*C14)
こちらも品番が空のときにエラーが出ないよう IF で空白処理を加えています。この数式も14行目から23行目までコピーしておきます。
小計はSUM関数で金額列の合計を出します。
=SUM(E14:E23)
消費税はROUND関数で端数を処理します。小計セルをC8とすると次の通りです。
=ROUND(C8*0.1,0)
ROUND(値, 桁数) の桁数を 0 にすると小数点以下を四捨五入して整数にしてくれます。切り捨てにしたい場合は ROUNDDOWN、切り上げは ROUNDUP に変えるだけです。
合計金額(税込)は小計と消費税を足します。
=SUM(C8,C9)
⑤ EOMONTH|支払期日を自動で算出する
EOMONTH関数は「指定した月数後の月末日」をそのまま返してくれる関数です。
=EOMONTH(F2,1)
F2セルに発行日が入っている場合、この数式で「翌月末日」が自動で計算されます。第2引数の数字を変えることで、当月末なら 0、翌々月末なら 2 と柔軟に対応できます。
表示形式は「セルの書式設定」で日付形式(例:yyyy/m/d)に設定しておくと見栄えが整います。
VBAパート|ボタン1つで発行・保存・記録・リセットを自動化する
関数パートで「入力と計算の自動化」が完成しました。次はVBAを使って「発行ボタンを押したときの動き」を自動化します。
VBAのコードの詳細はここでは省きますが、ボタンを1つ押すだけで次の5つが一気に動きます。
① PDF保存+ファイル名の自動命名
発行ボタンを押すと、請求書シートがそのままPDFに変換されて自動保存されます。ファイル名は次の形式で自動的に決まります。
20260610_2606001_株式会社山田商事_請求書.pdf
「発行日_請求No_会社名_請求書.pdf」という形で命名されるため、ファイルが増えてもすぐに目的のものを見つけられます。ファイル名に使えない記号(/・*・? など)は自動で除去されます。
② 請求番号の自動採番
請求書番号は「年月+連番」の形式で重複しないように自動採番されます。
| 発行タイミング | 請求No |
|---|---|
| 2026年6月1件目 | 2606001 |
| 2026年6月2件目 | 2606002 |
| 2026年7月1件目 | 2607001 |
月が変わると連番が自動でリセットされます。番号が重複することはないため、請求番号の管理を意識する必要がありません。
③ 発行履歴・明細履歴の自動記録
発行するたびに2つのシートに情報が自動で記録されます。
| シート名 | 記録される内容 |
|---|---|
| 発行履歴 | 請求No・顧客コード・会社名・合計金額・発行日時 |
| 発行詳細履歴 | 請求Noごとの品番・数量の明細 |
同じ請求Noで再発行した場合は前の履歴が自動で上書きされます。「いつ・誰に・いくらで・何を発行したか」が常に最新の状態で蓄積されていくため、あとから確認したいときもすぐに見つかります。
④ 過去の請求書を呼び出す
「先月の請求書を修正して再発行したい」という場面でも、請求Noを入力するだけで過去の内容をフォームに再現できます。品番・数量・顧客コード・発行日がそのまま呼び戻されるため、一から入力し直す手間がありません。
⑤ 発行後にフォームを自動リセット
発行完了後は、品番・数量・顧客コードの入力欄が自動でクリアされます。次の請求書をすぐ作れる状態に戻るため、「前回の内容が残ったまま上書きしてしまった」というミスを防げます。
まとめ
- 顧客マスタ・商品マスタを別シートに用意しておくことが自動化の土台になる
- VLOOKUP:顧客コードから会社名・担当者名、品番から品名・単価を自動入力する
- プルダウン(データの入力規則):品番を商品マスタから選ぶだけにして入力ミスをなくす
- SUM・ROUND:金額・小計・消費税・合計を自動計算し端数ミスをなくす
- EOMONTH:発行日から翌月末の支払期日を自動で算出する
- VBA(発行ボタン):PDF保存・採番・履歴記録・呼び出し・リセットがボタン1つで完結する
- 手入力するのは「顧客コード」と「品番・数量」だけになる
「関数って難しそう」と思っていた方も、今回紹介した関数はどれも書き方がシンプルです。まずはVLOOKUPとプルダウンだけでも設定してみると、請求書作業の体感が大きく変わります。
動画では実際にゼロから一緒に作っていく予定です。ぜひチャンネル登録をして公開をお待ちください。
全てのコードはnoteにて有料記事で公開しています。


