エクセルの発注管理表は、1発注を1行で書く作り方にすると、分納が始まった時点で発注残が合わなくなります。この記事では、発注明細・入荷・マスタの3シートに分ける列設計、分納でも崩れない発注残の数式、納期遅れの色分け、仕入先別・月別の集計式を、そのまま入力できる形で示します。後半では、同時編集・承認の証跡・取適法の発注書・在庫や会計との二重入力という4つの条件で管理表が破綻する理由と、購買管理システムへ移す判断基準をまとめました。発注から支払までの業務全体の流れは購買管理の業務フロー(見積・発注・検収・支払)の解説で確認できます。
まとめ:発注管理のエクセル運用は3シート構成と発注残の式で続け4条件で移行
エクセルで発注管理を続けるなら、最初に決めるのは関数ではなく表の分け方です。発注した内容と入荷した事実を別のシートに記録し、発注残は「発注数から入荷数の合計を引く」式で毎回計算させます。この形にしておけば、1つの発注が3回に分けて届いても発注残は正しく出ます。
単価はマスタから引いた後に値として固定してください。マスタを参照したままだと、単価改定の日に過去の発注金額まで書き換わります。
移行を考えるのは、入力者が同時に複数いる、承認の記録を残す必要がある、取適法の対象となる発注先がある、在庫や会計へ同じ数字を手で打ち直している、の4つのどれかに当てはまったときです。件数の多さより、この4条件のほうが破綻の予兆として確実に表れます。
エクセルの発注管理表を発注明細・入荷・マスタの3シートに分ける列設計
市販のテンプレートの多くは、1行に発注日・品名・数量・納期・入荷日を並べる1シート構成です。発注と入荷が1対1のうちは困りませんが、分納や納期変更が入ると1行に収まらなくなります。
発注明細シートの必須8列と品目ごとの入荷を追うために1行に1品目を書く原則
発注明細シートは、1行に1発注の1品目を書きます。1枚の発注書に5品目あれば5行です。発注書単位でまとめて1行にすると、品目ごとの入荷と発注残が追えません。
| 列 | 入れる値 | 入力の決まり |
|---|---|---|
| 明細キー | 発注番号と行番号をつないだ値 | 数式で自動生成し手入力しない |
| 発注番号 | PO-2026-0153 のような番号 | 年+連番で重複させない |
| 発注日 | 日付 | 文字列でなく日付型で入れる |
| 仕入先コード | マスタのコード | 入力規則のリストから選ぶ |
| 品目コード | マスタのコード | 入力規則のリストから選ぶ |
| 発注数 | 数値 | 単位はマスタ側で固定する |
| 発注単価 | 発注時点の単価 | マスタから引いた後に値で固定 |
| 納期 | 日付 | 変更したら変更履歴列にも記録 |
品名や仕入先名はマスタから表示させる列として足せばよく、手で打ち込む列にはしません。表記ゆれが1件でも混ざると、仕入先別の集計から漏れるためです。表全体はCtrl+Tでテーブルに変換し、「発注」「入荷」のように名前を付けておくと、後の数式で列名を使えます。
入荷シートを発注明細から分けて分納と一部入荷を1行ずつ記録する理由
入荷シートは、荷物が届くたびに1行を足していきます。必要な列は、入荷日・明細キー・入荷数・検収者の4列です。100個の発注が40個と60個に分かれて届けば、入荷シートには2行が残ります。
発注明細シートに「入荷日」「入荷数」の列を作る方式だと、2回目の入荷で上書きするか、列を「入荷日2」「入荷数2」と横に増やすことになります。上書きすれば1回目の記録が消え、横に増やせば何回目まで用意するかで行き詰まります。入荷を別シートの縦方向に記録しておけば、分納の回数に上限がありません。
仕入先マスタと品目マスタに持たせる列と分類変更に備えたコード体系の決め方
仕入先マスタには、仕入先コード・正式名称・締め日・支払条件・取適法の対象区分を持たせます。品目マスタは、品目コード・品名・単位・標準単価・標準リードタイム(日数)の5列が基本です。
コードは意味を持たせすぎないほうが長持ちします。「A01=金属部品」のように分類を埋め込むと、分類の見直しでコードを振り直すことになるからです。分類は別の列に持たせ、コードは単なる連番にしておくと、マスタが300件を超えても運用が崩れません。
エクセルの発注管理表で発注残と納期遅れと仕入先別の金額を出す数式
ここからは、前章のテーブル名「発注」「入荷」「品目」を前提にした数式です。構造化参照で書いているので、行が増えても数式の範囲を直す必要がありません。
分納があっても崩れない発注残を入荷シートからSUMIFSで計算する式
発注明細シートに「入荷済数」と「発注残」の列を足し、次の式を入れます。
- 明細キー:
=[@発注番号]&"-"&[@行番号] - 入荷済数:
=SUMIFS(入荷[入荷数],入荷[明細キー],[@明細キー]) - 発注残:
=[@発注数]-[@入荷済数]
入荷済数は、入荷シートのうち明細キーが一致する行の入荷数をすべて足した値です。何回に分けて届いても合計が取られるので、発注残はつねに正しく出ます。Microsoftの「SUMIFS 関数」の説明では、条件範囲と合計対象範囲は同じ行数・列数にそろえる必要があるとされています。テーブルの列で指定していれば、この条件は自動で満たされる仕組みです。発注残がマイナスになった行は、過剰入荷か入荷シートの明細キーの打ち間違いなので、条件付き書式で赤くしておくと見落としません。
発注残がある明細の納期遅れと納期3日前を条件付き書式で色分けする判定式
条件付き書式の「数式を使用して、書式設定するセルを決定」に、次の2つを登録します。テーブルの1行目のセルを基準に、列記号の前にだけ$を付けて書きます(例は発注残がJ列、納期がH列の場合)。
- 納期遅れ(赤):
=AND($J2>0,$H2<TODAY()) - 納期3日前(黄):
=AND($J2>0,$H2-TODAY()<=3,$H2>=TODAY())
どちらも発注残が0より大きいことを条件に入れているのが要点です。納期だけで判定すると、すでに入荷が済んだ行まで赤く塗られ、遅れている行が埋もれます。
遅れている明細だけを別シートに一覧で出すなら、Microsoft 365とExcel 2021以降で使えるFILTER関数が便利です。=FILTER(発注,(発注[発注残]>0)*(発注[納期]<TODAY()),"遅れなし")と書けば、朝の確認で見るべき行がまとまります。
仕入先別・月別の発注金額をSUMIFSの日付条件で集計する式
発注明細シートに「金額」列(=[@発注数]*[@発注単価])を足し、集計シートのA列に仕入先コード、2行目に各月の1日の日付を並べます。B3セルの式は次のとおりです。
=SUMIFS(発注[金額],発注[仕入先コード],$A3,発注[発注日],">="&B$2,発注[発注日],"<="&EOMONTH(B$2,0))
この式を右と下へコピーすれば、仕入先×月の発注金額表ができます。SUMIFSは条件を最大127組まで重ねられるので、担当者や品目分類を条件に加えることもできます。月ごとに見たいのが「発注金額」なのか「入荷金額」なのかは、締め処理と照合するなら入荷側で集計するのが筋です。請求書と突き合わせる金額は、発注した金額ではなく届いた分の金額だからです。
単価をXLOOKUPで引いた後に値で固定しないと起きる過去金額の書き換わり
品目コードから単価を引く式は=XLOOKUP([@品目コード],品目[品目コード],品目[標準単価],"未登録")です。MicrosoftのXLOOKUP関数のページには、Excel 2016とExcel 2019では使えないという注記があります。社内にこれらの版が残っているなら、VLOOKUPかINDEXとMATCHの組み合わせで書いてください。
問題は、この式を入れたままにしておくことです。品目マスタの標準単価を4月1日に改定すると、3月以前の発注行の単価まで新しい値に変わり、過去の月の発注金額が集計表の上で書き換わります。請求書との照合で差額が出て初めて気づくことが多い事故です。
対策は2つあります。入力用の列で単価を引いた後、発注確定のタイミングで「値の貼り付け」により発注単価列へ移す方法と、品目マスタを「適用開始日つきの単価履歴」にして発注日時点の単価を引く方法です。運用の手間が少ないのは前者で、価格交渉が頻繁な品目が多いなら後者が向きます。
エクセルの発注管理表が破綻する4つの条件と表の工夫では戻らない理由
ここまでの設計で、1人が入力する発注管理は相当の件数まで回ります。ワークシートの行数の上限はMicrosoftの「Excel の仕様と制限」で1,048,576行とされており、発注明細が上限に届く会社はまずありません。破綻は件数ではなく、次の4つの条件から始まります。
複数の担当者が同時に入力すると上書きと入力規則の崩れが起きる
同じ仕様と制限のページには、旧来の共有ブックでは、Excelテーブルを1つでも含むブックで「複数のユーザーによる変更を許可する」を有効にできないと書かれています。前章のテーブル前提の設計は、旧来の共有ブックと両立しません。
OneDriveやSharePointに置いた共同編集なら同時に開けますが、別の弱さが残ります。ある担当者が行を並べ替えている間に別の担当者が入力すると、入力したつもりの行が別の発注の位置に入るおそれがあるため注意が必要です。コピー貼り付けで入力規則のリストが消えるのも、入力者が増えるほど頻繁になります。工程管理や案件管理で同じ壁に当たる様子はエクセル管理の限界と移行の判断基準でも扱っています。
承認と変更の証跡が業務記録として残らず誰がいつ単価を変えたか追えない
エクセルには、セルの値を誰がいつ変えたかを業務記録として残す仕組みがありません。共同編集のバージョン履歴で過去の状態に戻すことはできますが、「発注番号PO-2026-0153の単価を誰が変えたか」を後から引くための記録ではありません。
上長の承認を経てから発注する決まりがある会社では、承認の有無をセルの「済」の文字で表すことになります。誰でも打てる文字なので、内部監査で承認の証拠として扱えません。発注金額が一定額を超えたら承認を必須にする規程を作った時点で、エクセルの外に承認の記録を持つ必要が出てきます。
取適法の対象の発注先がいると発注書の記載事項と保存を表で守れない
2026年1月1日に下請法は中小受託取引適正化法(取適法)へ改正・改称されました。対象となる取引では、発注のたびに定められた事項を書いた発注書を直ちに示し、変更があればその内容も記録して保存する必要があります。記載事項の詳細は取適法の発注書の必須記載事項8項目と電子交付の条件で解説しています。
エクセルの発注管理表から発注書を作る場合、困るのは記載漏れと変更の扱いです。入力規則では「この発注先は取適法の対象だから、支払期日の欄が空なら発注書を出させない」という条件分岐をかけにくく、納期を変えたときに変更前の値も残す運用は人の注意に頼ることになります。仕入先マスタに対象区分を持たせても、それを発注確定の可否まで結び付けるのは表計算の役割を超えています。
在庫表と会計ソフトへ同じ数字を手で打ち直す二重入力と月末照合の負担
入荷シートに40個と入力した後、在庫表にも40個を足し、月末には会計ソフトへ仕入金額を打ち込む。この流れが続いているなら、同じ事実を3回入力しています。1か所で打ち間違えると、どれが正しいかを確かめるために3つのファイルを突き合わせることになります。
ブック間をリンクする数式でつなぐ方法もありますが、ファイル名や保存場所を変えた瞬間にリンクが切れます。月末の照合に半日以上かかるようになったら、表の工夫で戻る段階は過ぎています。
発注管理をエクセルから購買管理システムへ移す判断基準と移行の進め方
4つの条件のうち1つに当てはまっただけで、すぐにシステムが要るわけではありません。どの条件が、どの程度の頻度で起きているかで判断します。
エクセルで続ける場合とシステムへ移す場合の入力者・承認・連携条件別の線引き
| 条件 | エクセルで続けてよい状態 | システムへ移す状態 |
|---|---|---|
| 入力者 | 発注を入力する人が1〜2人 | 3人以上が日常的に同時入力する |
| 承認 | 承認規程がない・口頭で足りる | 金額で承認者が変わる規程がある |
| 取適法 | 対象の発注先がいない | 対象の発注先に継続して発注する |
| 連携 | 在庫・会計は月1回の手入力で済む | 月末照合に半日以上かかる |
| 分納 | 分納がほとんどない | 入荷シートの修正が毎週発生する |
表の線引きは、前章の4条件が日常業務で表面化する地点を本稿の判断として置いたものです。とくに取適法と承認の2行は、件数が少なくても移す側に入ります。記録が残らないこと自体が問題になる条件だからです。逆に、入力者が1人で取適法の対象もない会社なら、月に数百行の発注があってもエクセルで十分です。
移行先をパッケージと受託開発のどちらにするかを業務ルールで判断する分かれ目
発注から入荷・検収・支払までの流れが一般的な形に近いなら、購買管理のパッケージやクラウドサービスから検討するのが早道です。機能の範囲は購買管理システムの機能と選び方の解説で整理しており、初期費用と月額の目安は購買管理システムの費用相場にまとめています。
受託開発が向くのは、エクセルで独自に作り込んだ判定がそのまま業務のルールになっている場合です。仕入先ごとに締め日と単価の改定時期が違う、品目によって分納の許容回数が決まっている、既存の生産管理や販売管理とつなぐ必要がある、といった条件はパッケージの設定で吸収しきれないことがあります。一創の購買管理システム開発では、現行の発注管理表の列と数式を読み解くところから要件に落とし込みます。
エクセルの発注管理表と表の外の確認作業を要件定義の材料にする移行手順
移行の前に作った発注管理表は、捨てずに要件定義の材料にします。進める順番は次のとおりです。
- 発注明細・入荷・マスタの各シートの列を一覧にし、手入力の列と数式の列を分ける
- 条件付き書式と入力規則に書かれた判定を文章に直す(例:発注残が0より大きく納期を過ぎたら遅れ)
- 担当者がエクセルの外でやっている確認(電話での納期回答、承認の声かけ)を書き出す
- 仕入先コードと品目コードの重複・表記ゆれを直し、マスタを移行できる状態にする
- 過去の発注明細のうち、何年分を新システムへ移すかを決める
手順3が最も漏れやすい部分です。エクセルの中にある判定は列と数式から読み取れますが、表の外で人がやっている確認は書き出さない限り要件に入りません。移行後に「前はできていた」と言われる機能の多くは、ここから出てきます。
発注管理のエクセル運用で使うテンプレートや関数についてよくある質問
発注管理表をエクセルで作るときや、運用を見直すときによく出る質問をまとめました。
発注管理表のエクセルテンプレートは無料のものを使ってもよいですか?
使えますが、多くの無料テンプレートは1発注を1行で書く構成です。分納がない取引なら問題なく回ります。分納や納期変更が起きる取引があるなら、テンプレートの発注一覧を発注明細シートとして使い、入荷シートを別に足してください。そのうえで発注残の列を、入荷シートを合計するSUMIFSの式に置き換えます。既存のテンプレートを直す場合も、入荷を別シートに分けることだけは先に済ませておくと、後の集計が楽になります。
Googleスプレッドシートでも同じ発注管理表を作れますか?
作れます。SUMIFS、FILTER、条件付き書式は同じ考え方で使えます。エクセルのテーブル名と列名で書いた数式は、ファイルを変換すると範囲指定に置き換わることがあるため、変換後に式を見直してください。同時編集の上書きはエクセルより起きにくい一方、誰がどのセルを変えたかを業務記録として残せない点は変わりません。承認と証跡の問題は、どちらの表計算でも解決しない条件です。
発注書もエクセルの発注管理表から作れますか?
作れます。発注書シートに発注番号を入れると、発注明細シートから該当行をFILTER関数で抜き出して明細欄に並べる形が一般的です。ただし取適法の対象となる発注先には、定められた記載事項をすべて書く必要があり、空欄のまま出さない仕組みを人の確認で担保することになります。発注書と注文書の呼び分けや印紙の扱いは発注書と注文書の違いと印紙・保管の解説で確認できます。
在庫管理も同じエクセルのブックで管理してよいですか?
入力者が1人なら、同じブックに在庫シートを置き、入荷シートの合計から出庫の合計を引いて在庫数を出す形で運用できます。別ブックに分けてリンクでつなぐより、同じブック内のほうがリンク切れが起きません。ただし出庫を現場の複数人が入力するようになった時点で、同時編集の問題が発注より先に表面化します。在庫の入力者が増える見込みがあるなら、在庫側からシステム化を考えるほうが順序として自然です。
発注点を下回ったら自動で発注候補を出すことはエクセルでできますか?
品目マスタに発注点の列を持たせ、在庫数が発注点を下回った品目をFILTER関数で一覧にすれば、発注候補の表示まではできます。発注書の作成や仕入先への送信まで自動で行うには、マクロか外部の仕組みが必要です。発注点方式と需要予測型の違い、どこからシステムに任せるかは自動発注システムの方式と導入可否の判断基準で整理しています。
関連記事
- 中小企業の購買管理システムの選び方|スモールスタートと内製・パッケージ・受託の判断:エクセルから移る際に小さく始める方法と選択肢を比べられます。
- 発注システムとは?機能・メリットと購買・仕入業務を効率化する選び方:発注業務に絞ったシステムの機能を確認できます。