ExcelのVLOOKUP・SUM・VBAで請求書を自動化する方法|初心者でもできる関数とボタン発行のしくみ

請求書の作成って、毎月地味に時間がかかりませんか?

会社名を手入力して、品名と単価を調べて、金額を電卓で計算して、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)

引数の意味を分解すると次の通りです。

引数今回の値意味
検索値J2J2セルの顧客コードを検索キーにする
範囲顧客マスタ!A:C顧客マスタシートのA〜C列を検索対象にする
列番号2範囲の2列目(B列=会社名)を返す
検索方法0完全一致で検索する(必ず0を指定)

担当者名のセルには列番号を 3 に変えた数式を入れます。

=VLOOKUP(J2,顧客マスタ!A:C,3,0)

これで顧客コードを1つ入力するだけで、会社名と担当者名が自動で入力されるようになります。

② データの入力規則(プルダウン)|品番を選ぶだけにする

品番を毎回手入力していると、打ち間違いが起きやすくなります。プルダウンリストを使えば、商品マスタにある品番だけを選べるようにできます。

設定手順は次の通りです。

  1. 品番を入力するセル(B14〜B23)を選択する
  2. メニューの「データ」→「データの入力規則」をクリック
  3. 「入力値の種類」を「リスト」に変更する
  4. 「元の値」に =商品マスタ!A:A と入力する
  5. 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にて有料記事で公開しています。

https://note.com/preview/n0a7647831f18?prev_access_key=1637473e02218aad8b674571caa51c73

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール