はじめに
SCMの仕事に配属されて最初に思ったこと。
「Excel、こんなに使うの?」
需要予測、在庫管理、発注判断、実績の集計——SCMの業務はほぼすべてExcelが絡む。専用システムが入っている会社でも、最終的な分析や報告はExcelで行うことが多い。
でも、SCMで使うExcelの関数は実はそこまで多くない。高度なマクロやVBAは不要で、基本的な関数を「SCMの文脈で使いこなせるか」が勝負だ。
今回は、SCM部門に配属されたばかりの人や、Excelをもっと業務に活かしたい人に向けて、僕が現場で本当によく使う関数を10個に絞って紹介する。
まずはこの4つ:データを「探す・集める」関数
① VLOOKUP / XLOOKUP
使う場面: 商品マスタからSKU名を引っ張る、発注先リストから仕入先情報を取得する
SCMでは複数のシートやファイルにデータが散らばっていることが多い。品番をキーにして、別のテーブルから商品名や単価、リードタイムを引っ張ってくるのが日常業務だ。
VLOOKUPは定番だけど、検索列より左のデータを取れない制約がある。XLOOKUPが使える環境なら、そちらのほうが柔軟で扱いやすい。
=VLOOKUP(A2, マスタ!A:D, 3, FALSE)
=XLOOKUP(A2, マスタ!A:A, マスタ!C:C)
② INDEX / MATCH
使う場面: VLOOKUPでは対応できない複雑な検索
VLOOKUPの上位互換的な組み合わせ。検索方向の制約がなく、行と列の両方を指定して値を取り出せる。
僕が一番よく使うのは、月別×商品別のマトリクスから特定の値を抜き出すとき。たとえば「7月のSKU-Aの出荷実績」をピンポイントで取得する場面だ。
=INDEX(データ範囲, MATCH(商品名, 商品列, 0), MATCH(月, 月行, 0))
③ SUMIFS
使う場面: 条件付きの集計(カテゴリ別・期間別の売上合計など)
SCMでは「特定のカテゴリの、特定の月の、出荷数量の合計」のように、複数条件で集計する場面が頻繁にある。SUMIFSはこれを1つの関数で処理できる。
在庫分析で「倉庫Aにある、カテゴリBの、在庫金額の合計」を出すときなど、毎日のように使う。
=SUMIFS(数量列, カテゴリ列, "飲料", 月列, "2025/04*")
④ COUNTIFS
使う場面: 条件に合うデータの件数を数える
SUMIFSの「数える版」。欠品が発生したSKUの数、予測誤差が20%を超えた品目の数など、件数ベースの分析に使う。
「先月、MAPEが20%を超えたSKUは全体の何%か」を出すとき、COUNTIFSで該当件数を出して全体件数で割るだけで、品質指標が一つ完成する。
=COUNTIFS(MAPE列, ">20%", カテゴリ列, "定番品")
次にこの3つ:データを「分析する」関数
⑤ AVERAGE / AVERAGEIFS
使う場面: 予測精度の平均値、平均在庫日数の算出
SCMのKPIは平均値で見ることが多い。MAPE(予測誤差)の月間平均、在庫回転率の平均、リードタイムの平均——どれもAVERAGEの出番だ。
AVERAGEIFSを使えば「定番品だけのMAPE平均」のように、条件を絞った平均も簡単に出せる。
=AVERAGEIFS(MAPE列, カテゴリ列, "定番品")
⑥ ABS
使う場面: 予測誤差(MAPE)の計算
MAPEの計算式は「|予測 - 実績| ÷ 実績」。この絶対値を取るのがABS関数だ。
地味だけど、予測精度の管理をExcelでやるなら必ず使う。予測が多くても少なくても「ズレの大きさ」として捉えるために、マイナスを消す必要がある。
=ABS(予測 - 実績) / 実績
⑦ IF / IFS
使う場面: 判定ロジックの組み込み(アラート、ランク分け)
「在庫日数が7日を切ったら"要注意"、3日を切ったら"危険"」のような判定をセルに入れるときに使う。
在庫ステータスの自動判定、予測精度のランク分け(A/B/C)、発注要否のフラグ付けなど、業務ルールをExcel上で仕組み化するときの基本パーツだ。
=IFS(在庫日数<3, "危険", 在庫日数<7, "要注意", TRUE, "正常")
仕上げの3つ:データを「整える・見せる」関数
⑧ TEXT
使う場面: 日付やコードのフォーマット統一
SCMでは複数のシステムからデータを引っ張ることが多く、日付の形式がバラバラなことがよくある。「2025/4/1」「20250401」「4月1日」が混在するとVLOOKUPが通らない。
TEXT関数で統一フォーマットに変換すれば、データ結合のトラブルが減る。
=TEXT(A2, "YYYYMMDD")
=TEXT(A2, "YYYY年MM月")
⑨ IFERROR
使う場面: エラー表示の回避
VLOOKUPやINDEX/MATCHで該当データがないとき、「#N/A」が表示されると見栄えが悪いし、後続の計算もエラーになる。
IFERRORで囲んでおけば、エラー時に「—」や0を返すようにできる。報告用のシートでは必須の関数だ。
=IFERROR(VLOOKUP(A2, マスタ!A:D, 3, FALSE), "—")
⑩ ROUND
使う場面: 数値の端数処理
在庫数や発注数に小数点が出ると、現場では使えない。「3.7個発注する」は現実にはあり得ない。
安全在庫の計算結果やケース単位への換算で、端数を丸める処理は地味に頻出する。ROUNDUPやROUNDDOWNも合わせて覚えておくと便利だ。
=ROUNDUP(必要数量 / ケース入数, 0)
まとめ:10個を「SCMの文脈」で使えるかが勝負
どれも基本的な関数ばかりだ。でも、これを「SCMの業務でどう使うか」がわかっているかどうかで、日々の作業効率はまったく変わる。
逆に言えば、この10個を使いこなせれば、SCMのExcel業務の8割はカバーできる。
もっとExcelを業務に活かしたい方へ
「関数はわかるけど、自分の業務にどう組み込めばいいかわからない」という方向けに、Excel業務フォーマットの作成サービスを提供しています。
在庫管理シート、需要予測、発注判断テンプレートなど、SCMの実務経験をもとに「現場で本当に使えるExcel」を作ります。
「こんなフォーマットは作れる?」というご相談だけでも大歓迎です。