
MRP 是物料需求規劃(Material Requirements Planning),一套從「成品哪一週要交多少」倒推「每顆零件要買多少、哪一週下單」的計算方法。它跟商品標籤上那個建議售價 MRP(Maximum Retail Price)同名但無關,這篇講的是工廠生管、採購每天在用的那一個。
我們在做營運系統的需求訪談時,生管和採購最常講的一句話是:「公式我都懂,難的是資料每天在變。」MRP 的算法本身不難,五個數字加一張 BOM 就能算;真正會讓工廠頭痛的,是料號亂、BOM 沒人維護、前置時間全憑採購記憶。這篇先把算法用一個完整算例講清楚,再談 Excel 撐到哪裡會崩,以及要系統化時有哪三條路。
讀者如果是中小製造業老闆、生管或採購,看完應該能自己判斷三件事:公司現在需不需要 MRP、Excel 還撐得住多久、要上系統的話該從 ERP 模組、獨立工具還是客製開發下手。
MRP 是什麼?物料需求規劃一句話講完
一句話:MRP 把「成品需求」沿著 BOM 往下拆,扣掉手上和路上的庫存,再依前置時間往前推,算出每顆料的下單數量和下單時間。
這套方法有六十年歷史。Wikipedia 的 MRP 條目整理得很清楚:1964 年美國 Black & Decker 用 IBM 1401 跑出第一套實用的 MRP,1975 年 Joseph Orlicky 出版《Material Requirements Planning》後在製造業普及,1983 年 Oliver Wight 再把產能規劃、主排程納進來,變成 MRP II。今天每一套 ERP 的生產模組,核心邏輯都還是這一套。
先給一張速覽表,三十秒拿到這篇的重點:
問題 | 簡單答案 |
|---|---|
MRP 在算什麼 | 每顆料要買(或做)多少、哪一週下單 |
需要哪些輸入 | 主生產排程、BOM、庫存與在途量、安全庫存、前置時間 |
核心公式 | 淨需求 = 毛需求 + 安全庫存 − 期初在庫 − 在途收料(小於 0 就不用買) |
什麼工廠需要 | 產品有多層零組件、料號超過幾百個、常常缺料或囤料的組裝型工廠 |
Excel 撐得住嗎 | 單一成品、兩層 BOM、料號百個以內還可以;多產品共用料就開始出錯 |
跟 ERP 的關係 | MRP 是 ERP 生產模組的計算核心,ERP 還多了財務、銷售、採購單據 |
跟 MES 的關係 | MRP 算計畫(該做什麼),MES 管現場(做得怎樣) |
導入前先做什麼 | 料號整理、BOM 校正、前置時間實測,這三件沒做好系統也算不準 |
如果你還在想 ERP 整體要怎麼挑,可以先看企業 ERP 選型完整指南;這篇只聚焦 MRP 這顆計算引擎。
MRP 計算邏輯:五個數字決定買多少、何時下單
先講結論:每顆料、每一週,MRP 都只問兩個問題。這週的需求,手上的量夠不夠?不夠的話,要提早幾週下單才來得及?
要回答這兩題,需要五個數字:
數字 | 白話意思 | 從哪裡來 | 填錯會怎樣 |
|---|---|---|---|
毛需求 | 這週總共要用掉多少 | 成品看訂單或主排程;零件看上一層的下單量 × BOM 用量 | 整條鏈往下全部算錯 |
期初在庫 | 倉庫裡現在真的有多少 | 庫存帳(要扣掉已被別張工單保留的量) | 帳上有、倉庫沒有,產線停工 |
在途收料 | 已經下單、還沒到的量 | 未結案的採購單與工單 | 重複下單,囤一堆料 |
安全庫存 | 平常不准動用的緩衝量 | 依用量波動和交期不穩程度設定 | 設太低常斷料,設太高壓資金 |
前置時間 | 從下單到可以用要幾週 | 供應商交期加上進料檢驗、自製件的加工天數 | 下單太晚來不及,太早占倉位 |
計算順序:由上往下一層一層拆
MRP 一定從最上層的成品開始算,算出成品的「計畫下單量」之後,這個數字乘上 BOM 用量,就變成下一層零件的毛需求。下一層算完,再往更下一層丟。所以一顆最底層的原料,要等它上面每一層都算完才知道自己要多少。
每一週的計算都是同一套流程:預計在庫 = 上週期末在庫 + 本週在途收料 + 本週計畫收料 − 本週毛需求。如果算出來會低於安全庫存,差額就是淨需求,系統依批量規則湊成一張計畫訂單,再往前推一個前置時間,那一週就是該下單的時間。
這個「每天、每週重算一次可用量」的邏輯,在很多營運系統裡都會出現。我們做過同型的營運系統:影視器材租賃與檔期系統的即時可用量引擎,就是把每一天的可租量算成「總量 − 當日維修 − 報廢 − 已預訂 − 外調」,排單前先抓出撞期。換成工廠的語言,就是 MRP 的預計在庫。如果你們現在也是靠 Excel 加人腦在排料,想先聊聊流程適不適合系統化,可以直接加 LINE 跟我們聊。
MRP 算例:一台推車第 6 週要交貨,鋼管第 2 週就得下單
用一個 3 層 BOM 實際算一次。假設一家工廠做小型手推車,客戶訂單是第 6 週要 100 台、第 8 週要 150 台,今天是第 1 週。BOM 和各料的庫存條件如下:
料號 | 層級 | 每個上層用量 | 前置時間 | 期初在庫 | 在途收料 | 安全庫存 | 批量規則 |
|---|---|---|---|---|---|---|---|
A 手推車 | 0 | (成品) | 1 週 | 20 | 無 | 0 | 缺多少做多少 |
B 車架組 | 1 | 每台 A 用 1 組 | 1 週 | 30 | 無 | 0 | 缺多少做多少 |
C 輪子 | 1 | 每台 A 用 4 個 | 2 週 | 200 | 第 3 週到 100 | 50 | 整箱 100 個為單位 |
D 鋼管 | 2 | 每組 B 用 3 支 | 2 週 | 60 | 無 | 30 | 缺多少買多少 |
第 0 層:手推車 A
第 6 週要 100 台,手上有 20 台,淨需求 80 台,組裝要 1 週,所以第 5 週開工 80 台。第 6 週出貨後在庫歸零,第 8 週的 150 台全部要做,第 7 週開工。
項目 | 第 1 週 | 第 2 週 | 第 3 週 | 第 4 週 | 第 5 週 | 第 6 週 | 第 7 週 | 第 8 週 |
|---|---|---|---|---|---|---|---|---|
毛需求 | 0 | 0 | 0 | 0 | 0 | 100 | 0 | 150 |
預計在庫(期末) | 20 | 20 | 20 | 20 | 20 | 0 | 0 | 0 |
淨需求 | 0 | 0 | 0 | 0 | 0 | 80 | 0 | 150 |
計畫收料 | 0 | 0 | 0 | 0 | 0 | 80 | 0 | 150 |
計畫下單 | 0 | 0 | 0 | 0 | 80 | 0 | 150 | 0 |
第 1 層:車架組 B 與輪子 C
A 的計畫下單量(第 5 週 80、第 7 週 150)就是 B 的毛需求。B 手上有 30 組,第 5 週淨需求 50 組,焊接 1 週,第 4 週開工;第 7 週的 150 組在第 6 週開工。
項目 | 第 1 週 | 第 2 週 | 第 3 週 | 第 4 週 | 第 5 週 | 第 6 週 | 第 7 週 | 第 8 週 |
|---|---|---|---|---|---|---|---|---|
毛需求 | 0 | 0 | 0 | 0 | 80 | 0 | 150 | 0 |
預計在庫(期末) | 30 | 30 | 30 | 30 | 0 | 0 | 0 | 0 |
淨需求 | 0 | 0 | 0 | 0 | 50 | 0 | 150 | 0 |
計畫收料 | 0 | 0 | 0 | 0 | 50 | 0 | 150 | 0 |
計畫下單 | 0 | 0 | 0 | 50 | 0 | 150 | 0 | 0 |
輪子 C 每台用 4 個,所以毛需求是第 5 週 320 個、第 7 週 600 個。它有三個條件要一起看:在途 100 個第 3 週到、安全庫存 50 個、只能整箱 100 個買。
- 第 5 週:期初 300 個(200 加第 3 週到的 100),要用 320 個,還要留 50 個安全庫存,淨需求 = 320 + 50 − 300 = 70 個。整箱湊成 100 個,期末剩 300 + 100 − 320 = 80 個。
- 第 7 週:期初 80 個,要用 600 個,淨需求 = 600 + 50 − 80 = 570 個,整箱湊成 600 個,期末剩 80 + 600 − 600 = 80 個。
- 交期 2 週,所以第 3 週下 100 個、第 5 週下 600 個。
項目 | 第 1 週 | 第 2 週 | 第 3 週 | 第 4 週 | 第 5 週 | 第 6 週 | 第 7 週 | 第 8 週 |
|---|---|---|---|---|---|---|---|---|
毛需求 | 0 | 0 | 0 | 0 | 320 | 0 | 600 | 0 |
在途收料 | 0 | 0 | 100 | 0 | 0 | 0 | 0 | 0 |
預計在庫(期末) | 200 | 200 | 300 | 300 | 80 | 80 | 80 | 80 |
淨需求 | 0 | 0 | 0 | 0 | 70 | 0 | 570 | 0 |
計畫收料 | 0 | 0 | 0 | 0 | 100 | 0 | 600 | 0 |
計畫下單 | 0 | 0 | 100 | 0 | 600 | 0 | 0 | 0 |
第 2 層:鋼管 D
鋼管的毛需求來自 B 的計畫下單量乘 3:第 4 週 150 支、第 6 週 450 支。手上 60 支、安全庫存 30 支,第 4 週淨需求 = 150 + 30 − 60 = 120 支;第 6 週期初剩 30 支,淨需求 = 450 + 30 − 30 = 450 支。交期 2 週,所以第 2 週就要下 120 支、第 4 週下 450 支。
項目 | 第 1 週 | 第 2 週 | 第 3 週 | 第 4 週 | 第 5 週 | 第 6 週 | 第 7 週 | 第 8 週 |
|---|---|---|---|---|---|---|---|---|
毛需求 | 0 | 0 | 0 | 150 | 0 | 450 | 0 | 0 |
預計在庫(期末) | 60 | 60 | 60 | 30 | 30 | 30 | 30 | 30 |
淨需求 | 0 | 0 | 0 | 120 | 0 | 450 | 0 | 0 |
計畫收料 | 0 | 0 | 0 | 120 | 0 | 450 | 0 | 0 |
計畫下單 | 0 | 120 | 0 | 450 | 0 | 0 | 0 | 0 |
算完之後要看的三件事
料號 | 要下的單 | 最早一張單的下單週 | 離今天還有幾週 |
|---|---|---|---|
A 手推車(工單) | 第 5 週 80 台、第 7 週 150 台 | 第 5 週 | 4 週 |
B 車架組(工單) | 第 4 週 50 組、第 6 週 150 組 | 第 4 週 | 3 週 |
C 輪子(採購單) | 第 3 週 100 個、第 5 週 600 個 | 第 3 週 | 2 週 |
D 鋼管(採購單) | 第 2 週 120 支、第 4 週 450 支 | 第 2 週 | 1 週 |
第一,越底層的料,下單時間越早。成品第 6 週才交,最底層的鋼管下週就得下單,生管如果等到第 4 週才想起來,就一定斷料。第二,安全庫存和整箱批量會讓「實際買的量」跟「實際用的量」不一樣,輪子總共買了 700 個、用了 920 個,差額由期初庫存和在途補上,最後還留 80 個。第三,只要上層任何一個數字變了(客戶把第 8 週改成 200 台),下面三層的數字要全部重算一次。
第三點就是 MRP 需要系統的根本理由。這個算例只有 4 個料號、8 週,人工算一次大概十五分鐘;真實工廠是幾百到幾千個料號、幾十個成品共用零件,每天訂單都在變。
MRP 的安全庫存和前置時間怎麼設才不會算歪
先講結論:安全庫存只給「交期不穩或用量波動大」的料,前置時間用最近半年的實際交貨天數來填,不要用供應商報價單上寫的天數。
安全庫存的三種設法
設法 | 怎麼算 | 適合哪種料 | 缺點 |
|---|---|---|---|
固定天數 | 平均日用量 × 緩衝天數(例如 5 天) | 用量穩定的通用料、包材 | 淡旺季差很多時會失準 |
依交期波動 | (最長交期 − 平均交期)× 平均日用量 | 交期常延誤的進口料、外包加工件 | 要有半年以上的交貨紀錄 |
統計公式 | 服務水準係數 × 需求標準差 × √前置時間 | 料號多、有完整歷史資料的工廠 | 資料不夠時算出來的數字沒有意義 |
我們的看法很直接:中小工廠一開始用前兩種就夠了。統計公式看起來專業,但它吃的是乾淨的歷史用量,資料髒的時候算出來只是一個精確的錯誤數字。安全庫存也不需要每顆料都設,A 類(金額高、用量大)和交期長的料先設,便宜的螺絲螺帽用整箱批量反而更省事。
前置時間要拆成三段
採購件的前置時間 = 下單到供應商出貨 + 運送 + 進料檢驗入庫。很多工廠只填第一段,結果系統建議的下單日每次都晚兩三天。自製件則是排隊等機台的時間加上實際加工時間,前面那段常常比加工時間還長,這部分要靠現場報工資料才抓得準。安全庫存設定與庫存功能的細節,庫存管理系統怎麼選那篇有整理一張對照表。
MRP、MRP II、ERP、MES、APS 差在哪?分工對照表
一句話分工:MRP 算料,MRP II 加上產能,ERP 把財務和業務也包進來,APS 把排程排到機台與分鐘,MES 管現場實際做了什麼。
系統 | 回答的問題 | 時間尺度 | 主要使用者 | 跟 MRP 的關係 |
|---|---|---|---|---|
MRP | 每顆料要買多少、哪週下單 | 週或天 | 生管、採購 | 本體 |
MRP II | 料夠了,產能也夠嗎 | 週 | 生管主管、廠長 | MRP 加上產能需求規劃與主排程 |
ERP | 訂單、採購、庫存、帳務能不能串成一條線 | 天到月 | 全公司 | MRP 是 ERP 生產模組裡的計算核心 |
APS | 哪張工單排在哪台機器、幾點開始 | 小時到分鐘 | 排程人員 | 吃 MRP 算出來的工單,做有限產能排程 |
MES | 現場實際做了多少、良率多少、卡在哪 | 即時 | 產線主管、作業員 | 回報完工數與耗料,讓 MRP 下一輪的在庫數字是真的 |
最常被搞混的是 MRP 和 APS。MRP 預設產能無限,只要料到了就當作做得出來;APS 才會看機台和人力是不是真的排得下。如果你的工廠是料常常不缺、但機台永遠排不過來,要先看的是客製化 APS 先進排程系統,MRP 幫不上忙。三套製造系統之間的資料怎麼接,ERP、MES、QMS 差在哪和製造業內部系統開發指南都有拆過;要往現場管理走,可以接著看客製化 MES 製造執行系統開發指南。
用 Excel 算 MRP,通常在這五個地方崩掉
Excel 算 MRP 完全可行,前面那個算例在 Excel 裡一個下午就能做出來。問題出在規模變大之後。試算表本來就容易藏錯:夏威夷大學 Raymond Panko 研究試算表錯誤多年,The New Republic 整理過他的統合分析,結論是大多數被稽核過的試算表都有實質錯誤,而且越大的表藏越多。MRP 剛好是那種「一格錯、整條鏈跟著錯」的表。
崩潰點 | 現場會看到什麼 | 為什麼 Excel 處理不好 |
|---|---|---|
共用料 | 兩個成品都用同一顆螺絲,各算各的,加總時漏掉一邊 | 跨工作表加總靠人工維護公式,產品一多就漏 |
BOM 改版 | 工程改了用量,採購還在用舊版算 | Excel 沒有版本與生效日,舊 BOM 和新 BOM 混在一起 |
在途與保留量 | 帳上有料,其實已經被另一張工單保留 | 保留量要從工單系統抓,手動貼上就會晚一天 |
多人同時改 | 生管改需求、採購改交期,存檔時互相覆蓋 | 共用檔案沒有欄位層級的權限與紀錄 |
每天重算 | 訂單一變,四層 BOM 要從頭重算一次 | 重算靠人按、靠人貼,忙的時候就跳過 |
自己判斷的方法很簡單:上面五項中了三項,或是每週花在「對料」的時間超過一個工作天,Excel 就已經在拖累交期了。想先用低成本工具撐一段時間的話,進銷存自己做完整指南比較了 Excel、Airtable、Notion 各自能撐到哪;預算是主要顧慮,ERP 太貴的 5 條替代路徑也值得一看。
MRP 系統化的三條路:ERP 內建模組、獨立 MRP 工具、客製開發
先講結論:已經有 ERP 或正要導 ERP 的,先用 ERP 內建的 MRP 模組;只缺算料、其他流程都還簡單的,用獨立 MRP 工具;流程特殊到套裝改不動,或是要跟現有系統深度串接的,才考慮客製。
路線 | 代表做法 | 適合誰 | 要注意的地方 |
|---|---|---|---|
ERP 內建 MRP 模組 | 鼎新、正航、SAP Business One、Odoo 製造模組、ERPNext | 已有 ERP,或採購、財務也要一起整合的工廠 | 模組常要另外加購;BOM 與庫存要先在 ERP 裡建乾淨 |
獨立 MRP 工具 | 雲端 MRP SaaS、進銷存附帶的簡易算料功能 | 幾十人規模、產品線單純、只想先解決缺料 | 跟會計、訂單系統要手動或用 API 串;多廠多倉支援有限 |
客製開發 | 依現有流程寫算料引擎,串接既有 ERP、MES 或訂單系統 | BOM 結構特殊(配方、選配、副產品),或套裝改不動 | 需求要寫清楚;要有人長期維護計算規則 |
開源 ERP 的做法可以先參考:ERPNext 的 MRP 文件與Odoo 製造模組文件都把「依銷售訂單或預測產生物料需求」寫成標準流程,拿來對照自家流程差多少很好用。各家 ERP 生產模組怎麼比,製造業 ERP 怎麼選:工單、BOM、生產排程有逐項拆;套裝跟流程對不上的徵兆,現成 ERP 為什麼總是不符需求整理了判斷表。
我們不建議一開始就客製 MRP
這句話由一個做客製系統的團隊來講,聽起來有點奇怪,但理由很實際。MRP 的計算邏輯六十年來幾乎沒變,套裝軟體已經把它做得很成熟,自己重寫一次算料引擎通常不划算。客製真正值得花錢的地方,在 MRP 的「前後」:訂單怎麼自動變成主排程、現場報工怎麼回寫庫存、BOM 改版怎麼同步到採購。這些才是每家工廠流程不一樣的地方。
我們做過同型的營運系統,例如替製造業客戶做的生產力管理系統,處理的是生產可見性、異常管理與產能效益分析,就是 MRP 算完之後「現場實際做得怎樣」那一段。如果你們卡在 MRP 前後的資料銜接,我們很樂意先聽你聊聊現況,一起看看哪一段最值得先動。
導入 MRP 前,先把這三份資料整理好
一句話:MRP 是一台很精準的計算機,資料錯它就精準地算錯。不管走哪條路,下面三份資料沒整理好就上線,系統建議的下單量沒人敢用,最後大家又回去開 Excel。
資料 | 要整理到什麼程度 | 常見問題 | 誰負責 |
|---|---|---|---|
料號主檔 | 一個實體料只有一個料號;單位、採購單位、換算比例都填齊 | 同一顆料有三個料號、單位一下用「個」一下用「盒」 | 倉管加採購 |
BOM | 每個成品都有正確的用量、損耗率與生效日;改版有紀錄 | BOM 只存在工程師腦中,或圖面與實際做法不一致 | 研發或工程 |
前置時間與安全庫存 | 每顆採購件用近半年實際交期;自製件有標準工時 | 全部填同一個預設值,或直接留空 | 採購加生管 |
期初庫存 | 上線前盤點一次,帳實相符 | 帳上庫存幾個月沒盤,差異大到沒人敢信 | 倉管 |
建議的順序是先挑一條產品線試算一個月:系統算、人也照舊算,兩邊對答案,數字對得上再放大到全廠。ERP 導入前的資料體檢,ERP CRM 導入前 90 天資料準備度體檢列了更完整的清單;如果是舊系統算料算不準、在想要不要換,可以看ERP 該換了嗎。進銷存和 ERP 模組怎麼取捨,進銷存軟體怎麼選有月費級距可以對照;真的要走客製,客製化 ERP 系統開發完整攻略整理了報價區間和驗收關卡。
ℹ️我們怎麼看
MRP 的算法不會再有大變化,接下來幾年的變化會發生在資料端:訂單從 LINE、電商平台自動進來,現場用掃碼和感測器回報完工,MRP 每天甚至每小時重算一次。對中小工廠來說,這代表該先投資的是「資料自動進系統」這一層,算料引擎直接用 ERP 或現成工具就好。我們的取捨也是這樣:不重寫成熟的計算邏輯,把力氣花在讓資料準時、正確地流進去。判斷要不要動手,可以看一個數字:生管每週花多少時間在對料和改表。超過一天,就值得開始規劃。
ℹ️我們做過這件事
恆遠目前累積 40+ 企業客製案落地,做的多半是企業內部的營運系統。其中跟 MRP 最接近的,是影視器材租賃與檔期系統的即時可用量引擎:每一天的可租量依維修、報廢、預訂與外調動態重算,千筆預訂數秒載入、撞期自動偵測。看到這裡,如果你也在想「我們工廠的算料流程放進系統會長什麼樣子」,我們很樂意聽你聊聊現在的實際情況,也可以直接加 LINE 丟問題過來。
QMRP 是什麼意思?
在製造業,MRP 是物料需求規劃(Material Requirements Planning),依成品需求、BOM、庫存與前置時間,算出每顆料要買多少、哪一週下單。零售業商品標籤上的 MRP 是建議售價(Maximum Retail Price),兩者無關。
QMRP 的淨需求怎麼算?
淨需求 = 毛需求 + 安全庫存 − 期初在庫 − 在途收料,算出來小於或等於 0 就不用下單。算出淨需求後,再依批量規則(例如整箱 100 個)湊成計畫訂單,往前推一個前置時間就是下單週。
QMRP 和 ERP 有什麼不同?
MRP 只負責算料;ERP 是整合訂單、採購、庫存、生產與財務的整套系統,MRP 通常是 ERP 生產模組裡的計算核心。只缺算料的小工廠可以先用獨立 MRP 工具,需要帳務與單據串接的再上 ERP。
QMRP 和 MES 要先導入哪一個?
看你缺的是哪一段。常常缺料、囤料,先做 MRP;料夠但現場進度看不到、良率追不到,先做 MES。兩者會互相餵資料:MRP 給工單,MES 回報完工數與耗料。
Q小工廠用 Excel 算 MRP 可以嗎?
單一產品線、兩層 BOM、料號百個以內,Excel 可以。出現共用料、BOM 常改版、多人同時改表,或每週對料超過一個工作天,就該考慮系統。
QMRP 和 MRP II 差在哪?
MRP 只算物料,預設產能無限;MRP II(製造資源規劃)多了產能需求規劃與主排程,會檢查機台和人力排不排得下。現在的 ERP 生產模組大多已包含 MRP II 的功能。
AUTHOR
恆遠數位編輯團隊
想了解更多?看看我們的相關服務
需要網站系統架設或軟體開發?
無論是品牌官網、客製化系統還是應用程式,我們的團隊擁有豐富經驗,歡迎聯繫我們,讓專業為您的事業加分。






留言(0)
尚無留言,成為第一個留言的人吧!