1 line
66 KiB
JSON
1 line
66 KiB
JSON
{"attrs":"{\"custom-publish-status\":\"publish\",\"custom-publish-time\":\"1759806028841\",\"custom-expires\":\"0\",\"custom-slug\":\"\"}","title":"Excel物料需求与库存分析系统","editorDom":"<div data-subtype=\"h2\" data-node-id=\"20251007101950-1gugbp5\" data-node-index=\"0\" data-type=\"NodeHeading\" class=\"h2\" updated=\"20251007103821\"><div contenteditable=\"true\" spellcheck=\"false\">一、如和使用</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"u\" data-node-id=\"20251007103538-0h6e40i\" data-node-index=\"1\" data-type=\"NodeList\" class=\"list\" updated=\"20251007103613\"><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007103613-sqd2oun\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007103613\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007103613-75wsxtt\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007103613\"><div contenteditable=\"true\" spellcheck=\"false\">启用宏功能</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"u\" data-node-id=\"20251007103538-bdebbsq\" data-node-index=\"2\" data-type=\"NodeList\" class=\"list\" updated=\"20251007103538\"><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007103538-z0q3aph\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007103538\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007103538-dh9t5wa\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007103538\"><div contenteditable=\"true\" spellcheck=\"false\">将库存数据<span data-type=\"strong\">全选覆盖粘贴</span>到<span data-type=\"code\">料件库存报表</span>工作表</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007103538-f74vlns\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007103538\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007103538-3ue35ls\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007103538\"><div contenteditable=\"true\" spellcheck=\"false\">将BOM数据粘贴到<span data-type=\"code\">BOM</span>工作表</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007103538-l98kcxb\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007103538\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007103538-2crsvgh\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007103538\"><div contenteditable=\"true\" spellcheck=\"false\">将预测数据粘贴到<span data-type=\"code\">Focest</span>工作表</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"u\" data-node-id=\"20251007103538-wptkjh0\" data-node-index=\"3\" data-type=\"NodeList\" class=\"list\" updated=\"20251007103623\"><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007103623-69q9u7n\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007103623\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007103623-ik5ukjv\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007103623\"><div contenteditable=\"true\" spellcheck=\"false\">按<span data-type=\"code\">Alt+F8</span>打开宏对话框</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"u\" data-node-id=\"20251007103538-l28z8vd\" data-node-index=\"4\" data-type=\"NodeList\" class=\"list\" updated=\"20251007103627\"><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007103627-u1ocd3t\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007103627\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007103627-rryv6m0\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007103627\"><div contenteditable=\"true\" spellcheck=\"false\">选择宏<span data-type=\"code\">A</span></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"u\" data-node-id=\"20251007103538-6q6mpo3\" data-node-index=\"5\" data-type=\"NodeList\" class=\"list\" updated=\"20251007103821\"><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007103631-s4oome2\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007103631\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007103631-qhayol7\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007103631\"><div contenteditable=\"true\" spellcheck=\"false\">点击<span data-type=\"code\">运行</span>按钮</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007103747-229bjft\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007103821\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007103749-o3w3b7f\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007103821\"><div contenteditable=\"true\" spellcheck=\"false\"> 在0000工作表查看所有汇总数据</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007103538-z5d2rho\" data-node-index=\"6\" data-type=\"NodeBlockquote\" class=\"bq\" updated=\"20251007103538\"><div data-node-id=\"20251007103538-joq3kr7\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007103538\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">重要注意事项</span>:</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"u\" data-node-id=\"20251007103538-smjcynk\" data-type=\"NodeList\" class=\"list\" updated=\"20251007103538\"><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007103538-m1bekwm\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007103538\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007103538-yhzozlu\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007103538\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">保持原始列位置不变,避免修改列顺序</span></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h1\" data-node-id=\"20251007103209-33jahkh\" data-node-index=\"7\" data-type=\"NodeHeading\" class=\"h1\" updated=\"20251007101950\"><div contenteditable=\"true\" spellcheck=\"false\">二、文件结构</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007103237-06coebk\" data-node-index=\"8\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007103237\"><div contenteditable=\"true\" spellcheck=\"false\"></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007102118-doi1b72\" data-node-index=\"9\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007102119\"><div contenteditable=\"true\" spellcheck=\"false\"><span contenteditable=\"false\" data-type=\"img\" class=\"img\"><span> </span><span><span class=\"protyle-action protyle-icons\"><span class=\"protyle-icon protyle-icon--only\"><svg class=\"svg\"><use xlink:href=\"#iconMore\"></use></svg></span></span><img src=\"assets/image-20251007102119-zzs4gks.png\" data-src=\"assets/image-20251007102119-zzs4gks.png\" loading=\"lazy\" alt=\"image\" /><span class=\"protyle-action__drag\"></span><span class=\"protyle-action__title\"><span></span></span></span><span> </span></span></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007101950-3xgqm1t\" data-node-index=\"10\" data-type=\"NodeTable\" class=\"table\" colgroup=\"|||\" updated=\"20251007102133\"><div contenteditable=\"false\"><table contenteditable=\"true\" spellcheck=\"false\"><colgroup><col /><col /><col /><col /></colgroup><thead><tr><th><span data-type=\"strong\">工作表名称</span></th><th><span data-type=\"strong\">功能描述</span></th><th><span data-type=\"strong\">数据来源</span></th><th><span data-type=\"strong\">更新频率</span></th></tr></thead><tbody><tr><td><span data-type=\"strong\">料件库存报表</span></td><td>存放SAP导出的库存数据</td><td>SAP系统导出</td><td>每日/每周</td></tr><tr><td><span data-type=\"strong\">BOM</span></td><td>BOM表数据</td><td>SAP系统导出</td><td>物料变更时</td></tr><tr><td><span data-type=\"strong\">Focest</span></td><td>存放预测需求数据</td><td>预测系统导出</td><td>每周</td></tr><tr><td><span data-type=\"strong\">Output</span></td><td>宏运行后生成的需求计算结果</td><td>系统自动生成</td><td>每次运行宏</td></tr><tr><td><span data-type=\"strong\">Cutput</span></td><td>宏运行后生成的需求透视表</td><td>系统自动生成</td><td>每次运行宏</td></tr><tr><td><span data-type=\"strong\">Unmatched</span></td><td>宏运行后生成的未匹配料号清单</td><td>系统自动生成</td><td>每次运行宏</td></tr><tr><td><span data-type=\"strong\">0000</span></td><td>主分析报表(最终查看页面)</td><td>综合所有数据</td><td>实时更新</td></tr></tbody></table><div class=\"protyle-action__table\"><div class=\"table__resize\"></div><div class=\"table__select\"></div></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h4\" data-node-id=\"20251007101950-4wo5r07\" data-node-index=\"11\" data-type=\"NodeHeading\" class=\"h4\" updated=\"20251007101950\"><div contenteditable=\"true\" spellcheck=\"false\">步骤1:准备源数据</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007101950-znq4l0w\" data-node-index=\"12\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007101950\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">库存报表数据要求:</span></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"u\" data-node-id=\"20251007101950-0d46td2\" data-node-index=\"13\" data-type=\"NodeList\" class=\"list\" updated=\"20251007101950\"><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007101950-6pqjxdb\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007101950\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007101950-5e97muw\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007101950\"><div contenteditable=\"true\" spellcheck=\"false\">必须包含的字段:料号、库存量、待验量、需求量、采购订单量、采购申请量、提前期天数、最小订单量、结余量</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007101950-n6nqtj0\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007101950\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007101950-2r71rup\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007101950\"><div contenteditable=\"true\" spellcheck=\"false\">数据格式:从SAP系统标准导出格式</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007102208-qmdycmg\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007102208\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007102208-d0y7lkq\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007102230\"><div contenteditable=\"true\" spellcheck=\"false\">直接整体覆盖粘贴</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007102222-55xa6og\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007102222\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007102222-mup6fx7\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007102223\"><div contenteditable=\"true\" spellcheck=\"false\"><span contenteditable=\"false\" data-type=\"img\" class=\"img\"><span> </span><span><span class=\"protyle-action protyle-icons\"><span class=\"protyle-icon protyle-icon--only\"><svg class=\"svg\"><use xlink:href=\"#iconMore\"></use></svg></span></span><img src=\"assets/image-20251007102223-ywzcq1h.png\" data-src=\"assets/image-20251007102223-ywzcq1h.png\" loading=\"lazy\" alt=\"image\" /><span class=\"protyle-action__drag\"></span><span class=\"protyle-action__title\"><span></span></span></span><span> </span></span></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007101950-mx6n0z8\" data-node-index=\"14\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007101950\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">BOM表数据要求:</span></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"u\" data-node-id=\"20251007101950-r20cvwd\" data-node-index=\"15\" data-type=\"NodeList\" class=\"list\" updated=\"20251007101950\"><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007101950-wvilwt7\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007101950\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007101950-6x7egcc\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007101950\"><div contenteditable=\"true\" spellcheck=\"false\">父料号、子料号、用量比例</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007101950-dh700zj\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007101950\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007101950-3s3cuty\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007101950\"><div contenteditable=\"true\" spellcheck=\"false\">完整的物料层级关系</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007102256-7lf98jt\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007102256\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007102256-tgfu4hi\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007102257\"><div contenteditable=\"true\" spellcheck=\"false\"><span contenteditable=\"false\" data-type=\"img\" class=\"img\"><span> </span><span><span class=\"protyle-action protyle-icons\"><span class=\"protyle-icon protyle-icon--only\"><svg class=\"svg\"><use xlink:href=\"#iconMore\"></use></svg></span></span><img src=\"assets/image-20251007102257-dad04rj.png\" data-src=\"assets/image-20251007102257-dad04rj.png\" loading=\"lazy\" alt=\"image\" /><span class=\"protyle-action__drag\"></span><span class=\"protyle-action__title\"><span></span></span></span><span> </span></span></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007101950-7wfj835\" data-node-index=\"16\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007101950\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">Focest预测数据要求:</span></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"u\" data-node-id=\"20251007101950-v31blto\" data-node-index=\"17\" data-type=\"NodeList\" class=\"list\" updated=\"20251007101950\"><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007101950-cjynlq3\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007101950\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007101950-48gvvew\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007101950\"><div contenteditable=\"true\" spellcheck=\"false\">料号、LIC系数</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007101950-tmr8lst\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007101950\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007101950-igk84lq\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007101950\"><div contenteditable=\"true\" spellcheck=\"false\">56周的需求预测数据</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007101950-raxyodd\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007101950\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007101950-lg129e0\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007101950\"><div contenteditable=\"true\" spellcheck=\"false\">基准日期信息</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h3\" data-node-id=\"20251007101950-12z0rkw\" data-node-index=\"18\" data-type=\"NodeHeading\" class=\"h3\" updated=\"20251007102659\"><div contenteditable=\"true\" spellcheck=\"false\">参数配置详解</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007101950-i1k872g\" data-node-index=\"19\" data-type=\"NodeTable\" class=\"table\" updated=\"20251007101950\" colgroup=\"||||\"><div contenteditable=\"false\"><table contenteditable=\"true\" spellcheck=\"false\"><colgroup><col /><col /><col /><col /><col /></colgroup><thead><tr><th><span data-type=\"strong\">单元格</span></th><th><span data-type=\"strong\">对应数据</span></th><th><span data-type=\"strong\">默认值</span></th><th><span data-type=\"strong\">数据源列</span></th><th><span data-type=\"strong\">说明</span></th></tr></thead><tbody><tr><td><span data-type=\"strong\">B1</span></td><td>库存量</td><td>2</td><td>D列</td><td>库存报表中库存所在列</td></tr><tr><td><span data-type=\"strong\">C1</span></td><td>待验量</td><td>3</td><td>E列</td><td>库存报表中待验量所在列</td></tr><tr><td><span data-type=\"strong\">D1</span></td><td>需求量</td><td>4</td><td>F列</td><td>库存报表中需求量所在列</td></tr><tr><td><span data-type=\"strong\">E1</span></td><td>PO量</td><td>5</td><td>G列</td><td>库存报表中采购订单量所在列</td></tr><tr><td><span data-type=\"strong\">F1</span></td><td>PR量</td><td>6</td><td>H列</td><td>库存报表中采购申请量所在列</td></tr><tr><td><span data-type=\"strong\">G1</span></td><td>LT天数</td><td>7</td><td>I列</td><td>库存报表中提前期天数所在列</td></tr><tr><td><span data-type=\"strong\">H1</span></td><td>MOQ</td><td>8</td><td>J列</td><td>库存报表中最小订单量所在列</td></tr><tr><td><span data-type=\"strong\">I1</span></td><td>结余量</td><td>9</td><td>K列</td><td>库存报表中结余量所在列</td></tr></tbody></table><div class=\"protyle-action__table\"><div class=\"table__resize\"></div><div class=\"table__select\"></div></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007101950-3rapueu\" data-node-index=\"20\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007102659\"><div contenteditable=\"true\" spellcheck=\"false\">如需更改数据提取列,直接修改B1:I1中的数字(如B1=3表示提取库存报表E列数据)</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h3\" data-node-id=\"20251007101950-3vhh8c9\" data-node-index=\"21\" data-type=\"NodeHeading\" class=\"h3\" updated=\"20251007104428\"><div contenteditable=\"true\" spellcheck=\"false\">4. 0000工作表(主分析仪表板)</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007103256-08bskql\" data-node-index=\"22\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007103257\"><div contenteditable=\"true\" spellcheck=\"false\"><span contenteditable=\"false\" data-type=\"img\" class=\"img\"><span> </span><span><span class=\"protyle-action protyle-icons\"><span class=\"protyle-icon protyle-icon--only\"><svg class=\"svg\"><use xlink:href=\"#iconMore\"></use></svg></span></span><img src=\"assets/image-20251007103256-5dcvrto.png\" data-src=\"assets/image-20251007103256-5dcvrto.png\" loading=\"lazy\" alt=\"image\" /><span class=\"protyle-action__drag\"></span><span class=\"protyle-action__title\"><span></span></span></span><span> </span></span></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h4\" data-node-id=\"20251007101950-89pe4g7\" data-node-index=\"23\" data-type=\"NodeHeading\" class=\"h4\" updated=\"20251007104428\"><div contenteditable=\"true\" spellcheck=\"false\">核心分析列说明</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007101950-5snse30\" data-node-index=\"24\" data-type=\"NodeTable\" class=\"table\" colgroup=\"|||\" updated=\"20251007101950\"><div contenteditable=\"false\"><table contenteditable=\"true\" spellcheck=\"false\"><colgroup><col /><col /><col /><col /></colgroup><thead><tr><th><span data-type=\"strong\">列</span></th><th><span data-type=\"strong\">标题</span></th><th><span data-type=\"strong\">公式</span></th><th><span data-type=\"strong\">业务含义</span></th></tr></thead><tbody><tr><td><span data-type=\"strong\">A</span></td><td>P/N</td><td>手工输入</td><td>需要分析的料号</td></tr><tr><td><span data-type=\"strong\">B</span></td><td>庫存</td><td><span data-type=\"code\">=VLOOKUP($A3,料件库存报表!$D:$BG,B$1,0)</span></td><td>当前库存数量</td></tr><tr><td><span data-type=\"strong\">C</span></td><td>待驗</td><td><span data-type=\"code\">=VLOOKUP($A3,料件库存报表!$D:$BG,C$1,0)</span></td><td>在检验中的数量</td></tr><tr><td><span data-type=\"strong\">D</span></td><td>需求</td><td><span data-type=\"code\">=VLOOKUP($A3,料件库存报表!$D:$BG,D$1,0)</span></td><td>当前需求量</td></tr><tr><td><span data-type=\"strong\">E</span></td><td>PO</td><td><span data-type=\"code\">=VLOOKUP($A3,料件库存报表!$D:$BG,E$1,0)</span></td><td>采购在途订单量</td></tr><tr><td><span data-type=\"strong\">F</span></td><td>PR</td><td><span data-type=\"code\">=VLOOKUP($A3,料件库存报表!$D:$BG,F$1,0)</span></td><td>采购申请量</td></tr><tr><td><span data-type=\"strong\">G</span></td><td>天数</td><td><span data-type=\"code\">=VLOOKUP($A3,料件库存报表!$D:$BG,G$1,0)</span></td><td>物料提前期(天)</td></tr><tr><td><span data-type=\"strong\">H</span></td><td>MOQ</td><td><span data-type=\"code\">=VLOOKUP($A3,料件库存报表!$D:$BG,H$1,0)</span></td><td>最小订购批量</td></tr><tr><td><span data-type=\"strong\">I</span></td><td>结余量</td><td><span data-type=\"code\">=VLOOKUP($A3,料件库存报表!$D:$BG,I$1,0)</span></td><td>可用库存结余</td></tr><tr><td><span data-type=\"strong\">J</span></td><td>L/T+两周</td><td><span data-type=\"code\">=ROUND(G3/7,0)+2</span></td><td>提前期周数+安全缓冲</td></tr><tr><td><span data-type=\"strong\">K</span></td><td>工单欠料</td><td><span data-type=\"code\">=I3-SUM(...)</span></td><td>结余量减去提前期内需求</td></tr><tr><td><span data-type=\"strong\">L</span></td><td>L/T内需求</td><td><span data-type=\"code\">=SUM(INDIRECT('P'&ROW()&':'&NT($J3+COLUMN($P$1)-1)&ROW()))</span></td><td>提前期内的总需求</td></tr><tr><td><span data-type=\"strong\">M</span></td><td>差异</td><td><span data-type=\"code\">=I3-L3</span></td><td>库存与需求的差异</td></tr><tr><td><span data-type=\"strong\">N-BH</span></td><td>周需求</td><td><span data-type=\"code\">=VLOOKUP($A5,Cutput!$A:$BH,Q$1,0)</span></td><td>各周预测需求数量</td></tr></tbody></table><div class=\"protyle-action__table\"><div class=\"table__resize\"></div><div class=\"table__select\"></div></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h3\" data-node-id=\"20251007104428-or2eom7\" data-node-index=\"25\" data-type=\"NodeHeading\" class=\"h3\" updated=\"20251007104428\"><div contenteditable=\"true\" spellcheck=\"false\">动态需求预测调整</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104428-t440rq0\" data-node-index=\"26\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104428\"><div contenteditable=\"true\" spellcheck=\"false\">通过修改<span data-type=\"code\">0000</span>工作表的<span data-type=\"code\">P2</span>日期,系统实现动态重算:</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104803-l1ak6we\" data-node-index=\"27\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104821\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">动态生成时间轴。</span> 它通过计算一个基准周数,并利用列位置自动向右递增,从而快速创建出一系列连续的周序号。当基准日期变化时,整个周序列会自动更新。</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104435-p1a57hu\" data-node-index=\"28\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104435\"><div contenteditable=\"true\" spellcheck=\"false\"></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104428-b0lymn0\" data-node-index=\"29\" data-type=\"NodeCodeBlock\" class=\"render-node\" updated=\"20251007104428\" data-content=\"graph LR\n P2[修改开始日期] --> A[重算周偏移量]\n A --> B[更新所有日期相关公式]\n B --> C[刷新需求时间序列]\n C --> D[重新计算L/T内需求]\" data-subtype=\"mermaid\"><div spin=\"1\"></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h1\" data-node-id=\"20251007104110-2uh5k3t\" data-node-index=\"30\" data-type=\"NodeHeading\" class=\"h1\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\">VBA代码中文注释</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h2\" data-node-id=\"20251007104110-jpr1zki\" data-node-index=\"31\" data-type=\"NodeHeading\" class=\"h2\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\">子程序 A</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104110-mbzdcls\" data-node-index=\"32\" data-type=\"NodeCodeBlock\" class=\"code-block\" updated=\"20251007104110\"><div class=\"protyle-action\"><span class=\"protyle-action--first protyle-action__language\" contenteditable=\"false\">vba</span><span class=\"fn__flex-1\"></span><span class=\"b3-tooltips__nw b3-tooltips protyle-icon protyle-icon--first protyle-action__copy\"><svg><use xlink:href=\"#iconCopy\"></use></svg></span><span class=\"b3-tooltips__nw b3-tooltips protyle-icon protyle-icon--last protyle-action__menu\"><svg><use xlink:href=\"#iconMore\"></use></svg></span></div><div class=\"hljs\"><div></div><div contenteditable=\"true\" style=\"flex: 1\" spellcheck=\"false\">Sub A()\n ' 调用B子程序处理数据\n Call B\n ' 调用Q子程序生成数据透视表\n Call Q\nEnd Sub\n</div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h2\" data-node-id=\"20251007104110-pa95spg\" data-node-index=\"33\" data-type=\"NodeHeading\" class=\"h2\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\">子程序 B - 主要数据处理程序</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104110-kny6p89\" data-node-index=\"34\" data-type=\"NodeCodeBlock\" class=\"code-block\" updated=\"20251007104110\"><div class=\"protyle-action\"><span class=\"protyle-action--first protyle-action__language\" contenteditable=\"false\">vba</span><span class=\"fn__flex-1\"></span><span class=\"b3-tooltips__nw b3-tooltips protyle-icon protyle-icon--first protyle-action__copy\"><svg><use xlink:href=\"#iconCopy\"></use></svg></span><span class=\"b3-tooltips__nw b3-tooltips protyle-icon protyle-icon--last protyle-action__menu\"><svg><use xlink:href=\"#iconMore\"></use></svg></span></div><div class=\"hljs\"><div></div><div contenteditable=\"true\" style=\"flex: 1\" spellcheck=\"false\">Sub B()\n ' 关闭屏幕更新、自动计算和事件处理以提高性能\n Application.ScreenUpdating = False\n Application.Calculation = xlCalculationManual\n Application.EnableEvents = False\n \n ' 定义工作表变量\n Dim wsFocest As Worksheet, wsBOM As Worksheet, wsOutput As Worksheet, wsUnmatched As Worksheet\n ' 定义行号变量\n Dim lastRowF As Long, lastRowB As Long, lastRowO As Long, lastRowU As Long\n ' 定义循环计数器\n Dim i As Long, j As Long, k As Long, col As Long\n ' 定义数据变量\n Dim keyPart As String, material As String, usage As Double\n Dim lic As Double, focestCol1 As String, focestCol2 As String\n ' 定义56周数据数组\n Dim weekValues(1 To 56) As Double\n ' 定义字典对象用于存储BOM数据和未匹配数据\n Dim dictBOM As Object, dictUnmatched As Object\n Dim materialData As Variant\n Dim key As Variant\n \n ' 创建字典对象\n Set dictBOM = CreateObject("Scripting.Dictionary")\n Set dictUnmatched = CreateObject("Scripting.Dictionary")\n \n ' 设置工作表引用\n Set wsFocest = ThisWorkbook.Sheets("Focest")\n Set wsBOM = ThisWorkbook.Sheets("BOM")\n \n ' 删除并重新创建输出工作表\n On Error Resume Next\n Application.DisplayAlerts = False\n ThisWorkbook.Sheets("Output").Delete\n ThisWorkbook.Sheets("Unmatched").Delete\n Application.DisplayAlerts = True\n On Error GoTo 0\n \n ' 创建新的输出工作表\n Set wsOutput = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))\n wsOutput.Name = "Output"\n Set wsUnmatched = ThisWorkbook.Sheets.Add(After:=wsOutput)\n wsUnmatched.Name = "Unmatched"\n \n ' 阶段1: 读取BOM数据到字典中\n lastRowB = wsBOM.Cells(wsBOM.Rows.Count, "A").End(xlUp).Row\n Dim bomData As Variant\n bomData = wsBOM.Range("A2:C" & lastRowB).Value\n \n ' 遍历BOM数据并填充字典\n For i = 1 To UBound(bomData, 1)\n keyPart = Trim(bomData(i, 1) & "")\n material = Trim(bomData(i, 2) & "")\n \n ' 安全处理使用量数值\n If IsNumeric(bomData(i, 3)) Then\n usage = CDbl(bomData(i, 3))\n Else\n usage = 0\n End If\n \n ' 如果关键部件和物料号都不为空,添加到字典\n If keyPart <> "" And material <> "" Then\n If Not dictBOM.Exists(keyPart) Then\n dictBOM.Add keyPart, New Collection\n End If\n dictBOM(keyPart).Add Array(material, usage)\n End If\n Next i\n \n ' 阶段2: 处理Focest数据 - 只处理有BOM匹配的行\n lastRowF = wsFocest.Cells(wsFocest.Rows.Count, "A").End(xlUp).Row\n Dim focestData As Variant\n focestData = wsFocest.Range("A2:BJ" & lastRowF).Value ' 列A到BJ (A, B + 56周)\n \n ' 预计算输出数据大小\n Dim outputRowCount As Long\n outputRowCount = 0\n For i = 1 To UBound(focestData, 1)\n keyPart = Trim(focestData(i, 1) & "")\n If keyPart <> "" And dictBOM.Exists(keyPart) Then\n outputRowCount = outputRowCount + dictBOM(keyPart).Count\n End If\n Next i\n \n ' 准备输出数组\n Dim outputData() As Variant\n ReDim outputData(1 To outputRowCount, 1 To 60) ' 4个固定列 + 56个周列\n \n lastRowO = 0\n \n ' 处理Focest数据\n For i = 1 To UBound(focestData, 1)\n keyPart = Trim(focestData(i, 1) & "")\n If keyPart = "" Then GoTo NextFocestRow\n \n ' 只处理有BOM匹配的行\n If dictBOM.Exists(keyPart) Then\n focestCol1 = focestData(i, 1) & ""\n focestCol2 = focestData(i, 2) & ""\n \n ' 安全处理LIC值\n If IsNumeric(focestData(i, 2)) Then\n lic = CDbl(focestData(i, 2))\n Else\n lic = 0\n End If\n \n ' 提取周数据并进行错误处理\n For j = 1 To 56\n If IsNumeric(focestData(i, j + 2)) Then\n weekValues(j) = CDbl(focestData(i, j + 2))\n Else\n weekValues(j) = 0\n End If\n Next j\n \n ' 处理匹配的BOM项目\n For k = 1 To dictBOM(keyPart).Count\n materialData = dictBOM(keyPart)(k)\n material = materialData(0)\n usage = materialData(1)\n lastRowO = lastRowO + 1\n \n ' 填充输出数据\n outputData(lastRowO, 1) = focestCol1\n outputData(lastRowO, 2) = focestCol2\n outputData(lastRowO, 3) = material\n outputData(lastRowO, 4) = usage\n \n ' 计算每周数据:周值 × LIC × 使用量\n For col = 1 To 56\n outputData(lastRowO, col + 4) = weekValues(col) * lic * usage\n Next col\n Next k\n End If\n \nNextFocestRow:\n Next i\n \n ' 阶段3: 单独处理没有BOM匹配的Focest行\n For i = 1 To UBound(focestData, 1)\n keyPart = Trim(focestData(i, 1) & "")\n If keyPart <> "" And Not dictBOM.Exists(keyPart) Then\n If Not dictUnmatched.Exists(keyPart) Then\n dictUnmatched.Add keyPart, True\n End If\n End If\n Next i\n \n ' 批量写入输出数据\n If outputRowCount > 0 Then\n wsOutput.Range("A2").Resize(outputRowCount, 60).Value = outputData\n End If\n \n ' 生成未匹配数据工作表\n wsUnmatched.Cells(1, 1).Value = "Unmatched Key Part Numbers"\n \n ' 写入未匹配的数据\n If dictUnmatched.Count > 0 Then\n Dim unmatchedData() As Variant\n ReDim unmatchedData(1 To dictUnmatched.Count, 1 To 1)\n i = 0\n For Each key In dictUnmatched.Keys\n i = i + 1\n unmatchedData(i, 1) = key\n Next key\n wsUnmatched.Range("A2").Resize(dictUnmatched.Count, 1).Value = unmatchedData\n End If\n \n ' 设置输出表的标题行\n wsOutput.Cells(1, 1).Value = "Focest Col1"\n wsOutput.Cells(1, 2).Value = "Focest Col2"\n wsOutput.Cells(1, 3).Value = "Material Number"\n wsOutput.Cells(1, 4).Value = "BOM Usage"\n For col = 1 To 56\n wsOutput.Cells(1, col + 4).Value = "Week" & col\n Next col\n \n ' 自动调整列宽\n wsOutput.Columns.AutoFit\n wsUnmatched.Columns.AutoFit\n \n ' 恢复Excel设置\n Application.ScreenUpdating = True\n Application.Calculation = xlCalculationAutomatic\n Application.EnableEvents = True\n \n ' 显示处理完成消息\n MsgBox "Processing completed! " & outputRowCount & " rows generated in Output sheet. " & _\n dictUnmatched.Count & " unmatched items found."\nEnd Sub\n</div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h2\" data-node-id=\"20251007104110-v8p7fvg\" data-node-index=\"35\" data-type=\"NodeHeading\" class=\"h2\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\">子程序 Q - 数据透视表生成程序</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104110-5m3p17h\" data-node-index=\"36\" data-type=\"NodeCodeBlock\" class=\"code-block\" updated=\"20251007104110\"><div class=\"protyle-action\"><span class=\"protyle-action--first protyle-action__language\" contenteditable=\"false\">vba</span><span class=\"fn__flex-1\"></span><span class=\"b3-tooltips__nw b3-tooltips protyle-icon protyle-icon--first protyle-action__copy\"><svg><use xlink:href=\"#iconCopy\"></use></svg></span><span class=\"b3-tooltips__nw b3-tooltips protyle-icon protyle-icon--last protyle-action__menu\"><svg><use xlink:href=\"#iconMore\"></use></svg></span></div><div class=\"hljs\"><div></div><div contenteditable=\"true\" style=\"flex: 1\" spellcheck=\"false\">Sub Q()\n ' 定义变量\n Dim wsSource As Worksheet, wsDest As Worksheet\n Dim pvtCache As PivotCache\n Dim pvtTable As PivotTable\n Dim lastRow As Long\n Dim SourceDataRange As Range\n Dim i As Long\n Dim fieldName As String\n Dim startTime As Double\n Dim dataField As PivotField\n\n ' 开始计时\n startTime = Timer\n\n ' 禁用Excel功能以提高性能\n OptimizeVBA True\n\n On Error GoTo ErrorHandler\n\n ' 检查源工作表是否存在\n If Not WorksheetExists("Output") Then\n MsgBox "Source worksheet 'Output' not found!", vbCritical\n GoTo CleanUp\n End If\n\n ' 设置源工作表引用\n Set wsSource = ThisWorkbook.Worksheets("Output")\n\n ' 如果目标工作表已存在则删除\n If WorksheetExists("Cutput") Then\n Application.DisplayAlerts = False\n ThisWorkbook.Worksheets("Cutput").Delete\n Application.DisplayAlerts = True\n End If\n\n ' 移除同名的现有数据透视表\n RemovePivotTable "WeeklySummaryPivot"\n\n ' 创建新的数据透视表工作表\n Set wsDest = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))\n wsDest.Name = "Cutput"\n\n ' 查找源工作表的最后一行数据\n lastRow = FindLastRow(wsSource)\n\n ' 验证是否有足够的数据\n If lastRow < 2 Then\n MsgBox "Insufficient data in source worksheet!", vbExclamation\n GoTo CleanUp\n End If\n\n ' 定义源数据范围\n Set SourceDataRange = wsSource.Range("A1:BH" & lastRow)\n\n ' 从源数据创建数据透视缓存\n Set pvtCache = ThisWorkbook.PivotCaches.Create( _\n SourceType:=xlDatabase, _\n sourceData:=SourceDataRange)\n\n ' 创建数据透视表\n Set pvtTable = pvtCache.CreatePivotTable( _\n TableDestination:=wsDest.Range("A3"), _\n tableName:="WeeklySummaryPivot")\n\n ' 配置数据透视表\n With pvtTable\n .ManualUpdate = True\n .RowAxisLayout xlTabularRow\n \n ' 添加行字段 - 物料号(C列)\n .AddFields RowFields:=wsSource.Cells(1, 3).Value\n \n ' 添加数据字段(E列到BH列)\n For i = 5 To 60\n fieldName = wsSource.Cells(1, i).Value\n \n If fieldName <> "" Then\n On Error Resume Next\n Set dataField = .PivotFields(fieldName)\n If Err.Number = 0 Then\n With dataField\n .Orientation = xlDataField\n .Function = xlSum\n .NumberFormat = "#,##0"\n \n If InStr(.Caption, "Sum of") = 0 Then\n .Caption = "Sum of " & fieldName\n End If\n End With\n Else\n Err.Clear\n End If\n On Error GoTo ErrorHandler\n End If\n Next i\n \n ' 应用格式设置\n .ShowTableStyleRowStripes = True\n .TableStyle2 = "PivotStyleMedium9"\n .ManualUpdate = False\n End With\n\n ' 添加标题和时间戳\n With wsDest\n .Range("A1").Value = "Weekly Summary Report"\n .Range("A1").Font.Bold = True\n .Range("A1").Font.Size = 14\n \n .Range("A2").Value = "Generated: " & Now()\n .Range("A2").Font.Italic = True\n End With\n\n ' 自动调整列宽\n If wsDest.UsedRange.Count > 1 Then\n wsDest.UsedRange.Columns.AutoFit\n End If\n\n ' 成功消息\n MsgBox "Pivot table created successfully in " & Format(Timer - startTime, "0.00") & _\n " seconds! Location: Worksheet " & wsDest.Name, vbInformation\n\nCleanUp:\n ' 清理和恢复设置\n OptimizeVBA False\n Set pvtTable = Nothing\n Set pvtCache = Nothing\n Set SourceDataRange = Nothing\n Set wsSource = Nothing\n Set wsDest = Nothing\n\n Exit Sub\n\nErrorHandler:\n ' 错误处理\n MsgBox "Error " & Err.Number & ": " & Err.Description & vbCrLf & _\n "Error occurred at line: " & Erl, vbCritical\n Resume CleanUp\nEnd Sub\n\n' 辅助函数:优化VBA性能\nSub OptimizeVBA(Optimize As Boolean)\n With Application\n If Optimize Then\n .ScreenUpdating = False\n .Calculation = xlCalculationManual\n .DisplayAlerts = False\n .EnableEvents = False\n .StatusBar = "Processing... Please wait"\n Else\n .ScreenUpdating = True\n .Calculation = xlCalculationAutomatic\n .DisplayAlerts = True\n .EnableEvents = True\n .StatusBar = False\n End If\n End With\nEnd Sub\n\n' 辅助函数:检查工作表是否存在\nFunction WorksheetExists(sheetName As String) As Boolean\n On Error Resume Next\n WorksheetExists = Not ThisWorkbook.Sheets(sheetName) Is Nothing\n On Error GoTo 0\nEnd Function\n\n' 辅助函数:按名称移除数据透视表\nSub RemovePivotTable(tableName As String)\n Dim ws As Worksheet\n Dim pt As PivotTable\n\n On Error Resume Next\n\n For Each ws In ThisWorkbook.Worksheets\n Set pt = ws.PivotTables(tableName)\n If Not pt Is Nothing Then\n pt.TableRange2.Clear\n Exit For\n End If\n Next ws\n\n On Error GoTo 0\nEnd Sub\n\n' 辅助函数:查找有数据的最后一行\nFunction FindLastRow(ws As Worksheet) As Long\n On Error Resume Next\n FindLastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row\n If FindLastRow = 1 And ws.Cells(1, 1).Value = "" Then FindLastRow = 0\n If Err.Number <> 0 Then FindLastRow = 0\n On Error GoTo 0\nEnd Function\n</div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h2\" data-node-id=\"20251007104110-9k50axy\" data-node-index=\"37\" data-type=\"NodeHeading\" class=\"h2\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\">代码功能总结</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104110-2p9o3tb\" data-node-index=\"38\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">子程序A</span>:主程序入口,依次调用B和Q子程序</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104110-x04g2t3\" data-node-index=\"39\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">子程序B</span>:</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"o\" data-node-id=\"20251007104110-mdk4nrh\" data-node-index=\"40\" data-type=\"NodeList\" class=\"list\" updated=\"20251007104110\"><div data-marker=\"1.\" data-subtype=\"o\" data-node-id=\"20251007104110-78alrwz\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104110\"><div class=\"protyle-action protyle-action--order\" contenteditable=\"false\" draggable=\"true\">1.</div><div data-node-id=\"20251007104110-y2w6cka\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\">读取BOM(物料清单)数据并建立字典索引</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"2.\" data-subtype=\"o\" data-node-id=\"20251007104110-jewpl19\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104110\"><div class=\"protyle-action protyle-action--order\" contenteditable=\"false\" draggable=\"true\">2.</div><div data-node-id=\"20251007104110-pl0ocv2\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\">处理Focest数据,与BOM数据进行匹配计算</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"3.\" data-subtype=\"o\" data-node-id=\"20251007104110-n8npioj\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104110\"><div class=\"protyle-action protyle-action--order\" contenteditable=\"false\" draggable=\"true\">3.</div><div data-node-id=\"20251007104110-n4kbxkg\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\">生成包含物料用量和周数据的输出表</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"4.\" data-subtype=\"o\" data-node-id=\"20251007104110-buwct96\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104110\"><div class=\"protyle-action protyle-action--order\" contenteditable=\"false\" draggable=\"true\">4.</div><div data-node-id=\"20251007104110-u57rtfv\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\">记录未匹配的关键部件号到单独工作表</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104110-epkbb6q\" data-node-index=\"41\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">子程序Q</span>:</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"o\" data-node-id=\"20251007104110-1k3ztzp\" data-node-index=\"42\" data-type=\"NodeList\" class=\"list\" updated=\"20251007104110\"><div data-marker=\"1.\" data-subtype=\"o\" data-node-id=\"20251007104110-ssaf42k\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104110\"><div class=\"protyle-action protyle-action--order\" contenteditable=\"false\" draggable=\"true\">1.</div><div data-node-id=\"20251007104110-3zpxiwb\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\">基于B子程序生成的输出表创建数据透视表</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"2.\" data-subtype=\"o\" data-node-id=\"20251007104110-can3jf8\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104110\"><div class=\"protyle-action protyle-action--order\" contenteditable=\"false\" draggable=\"true\">2.</div><div data-node-id=\"20251007104110-09i643v\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\">按物料号汇总各周数据</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"3.\" data-subtype=\"o\" data-node-id=\"20251007104110-l3a8e41\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104110\"><div class=\"protyle-action protyle-action--order\" contenteditable=\"false\" draggable=\"true\">3.</div><div data-node-id=\"20251007104110-zkavtaf\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\">生成格式化的周汇总报告</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104110-p70n2ap\" data-node-index=\"43\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104110\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">辅助函数</span>:提供性能优化、工作表检查、数据透视表管理等实用功能</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h3\" data-node-id=\"20251007104234-4cu6rrj\" data-node-index=\"44\" data-type=\"NodeHeading\" class=\"h3\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\">1. Output工作表(详细计算结果)</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104234-e7qb5rr\" data-node-index=\"45\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">数据结构:</span></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"u\" data-node-id=\"20251007104234-txu57xv\" data-node-index=\"46\" data-type=\"NodeList\" class=\"list\" updated=\"20251007104234\"><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007104234-0bxv2y0\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104234\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007104234-5oy2qrt\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">A列</span>:父料号</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007104234-qbbgzn5\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104234\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007104234-s5l6uui\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">B列</span>:LIC系数(需求放大系数)</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007104234-953gcfx\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104234\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007104234-ah37p39\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">C列</span>:子料号</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007104234-7u0kb66\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104234\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007104234-3aqvd95\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">D列</span>:BOM用量比例</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007104234-rvvnzjk\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104234\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007104234-b69x0xh\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">E-BH列</span>:56周的需求量计算(周1到周56)</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104234-hfslodc\" data-node-index=\"47\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">使用场景</span>:需要查看具体料号层级需求计算明细时使用</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h3\" data-node-id=\"20251007104234-vwfajdj\" data-node-index=\"48\" data-type=\"NodeHeading\" class=\"h3\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\">2. Cutput工作表(需求汇总透视表)</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104234-6wjn3sj\" data-node-index=\"49\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">数据结构:</span></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"u\" data-node-id=\"20251007104234-a6cpl7g\" data-node-index=\"50\" data-type=\"NodeList\" class=\"list\" updated=\"20251007104234\"><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007104234-l8jf64k\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104234\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007104234-xeygha8\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">A列</span>:料号</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007104234-37ijdow\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104234\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007104234-9oiu7wj\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">B列开始</span>:各周需求总和</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007104234-95gtdk4\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104234\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007104234-jg6348e\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">顶部标题</span>:生成日期和时间戳</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104234-3s8pph1\" data-node-index=\"51\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">特点</span>:</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"u\" data-node-id=\"20251007104234-v7fuqbi\" data-node-index=\"52\" data-type=\"NodeList\" class=\"list\" updated=\"20251007104234\"><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007104234-2sgzz55\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104234\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007104234-aecu5sx\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\">按料号汇总所有层级的需求</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007104234-ckeyepe\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104234\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007104234-ddgak02\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\">便于查看每个料件的总需求趋势</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20251007104234-l1w1dk0\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104234\"><div class=\"protyle-action\" draggable=\"true\"><svg><use xlink:href=\"#iconDot\"></use></svg></div><div data-node-id=\"20251007104234-vrhonpy\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\">支持数据透视表分析</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h3\" data-node-id=\"20251007104234-5obwvx7\" data-node-index=\"53\" data-type=\"NodeHeading\" class=\"h3\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\">3. Unmatched工作表(异常检测)</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104234-4vrosku\" data-node-index=\"54\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">内容</span>:在Focest预测中出现但未在BOM中找到的料号清单</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007104234-7yxg0wn\" data-node-index=\"55\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\"><span data-type=\"strong\">处理建议</span>:</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"o\" data-node-id=\"20251007104234-7tnqloh\" data-node-index=\"56\" data-type=\"NodeList\" class=\"list\" updated=\"20251007104234\"><div data-marker=\"1.\" data-subtype=\"o\" data-node-id=\"20251007104234-m5cmb4a\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104234\"><div class=\"protyle-action protyle-action--order\" contenteditable=\"false\" draggable=\"true\">1.</div><div data-node-id=\"20251007104234-3gw0d1b\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\">检查BOM完整性</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"2.\" data-subtype=\"o\" data-node-id=\"20251007104234-d75r9gt\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104234\"><div class=\"protyle-action protyle-action--order\" contenteditable=\"false\" draggable=\"true\">2.</div><div data-node-id=\"20251007104234-nnh20ro\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\">确认料号编码是否正确</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-marker=\"3.\" data-subtype=\"o\" data-node-id=\"20251007104234-cfkg1bl\" data-type=\"NodeListItem\" class=\"li\" updated=\"20251007104234\"><div class=\"protyle-action protyle-action--order\" contenteditable=\"false\" draggable=\"true\">3.</div><div data-node-id=\"20251007104234-4i4zp0z\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007104234\"><div contenteditable=\"true\" spellcheck=\"false\">更新BOM表数据</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-subtype=\"h2\" data-node-id=\"20251007103854-k7hdkk4\" data-node-index=\"57\" data-type=\"NodeHeading\" class=\"h2\" updated=\"20251007103858\"><div contenteditable=\"true\" spellcheck=\"false\">六、常见错误处理</div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007103854-tvzkohd\" data-node-index=\"58\" data-type=\"NodeTable\" class=\"table\" colgroup=\"|||\" updated=\"20251007103854\"><div contenteditable=\"false\"><table contenteditable=\"true\" spellcheck=\"false\"><colgroup><col /><col /><col /><col /></colgroup><thead><tr><th><span data-type=\"strong\">错误类型</span></th><th><span data-type=\"strong\">症状</span></th><th><span data-type=\"strong\">根本原因</span></th><th><span data-type=\"strong\">解决方案</span></th></tr></thead><tbody><tr><td><span data-type=\"strong\">#REF!</span></td><td>引用错误</td><td>列索引超出数据范围</td><td>检查B1:I1值是否在1-55范围内</td></tr><tr><td><span data-type=\"strong\">#VALUE!</span></td><td>值错误</td><td>数值列中包含文本数据</td><td>清理库存报表中的非数值字符</td></tr><tr><td><span data-type=\"strong\">#N/A</span></td><td>查找失败</td><td>VLOOKUP未找到匹配料号</td><td>验证料号在库存报表中存在</td></tr><tr><td><span data-type=\"strong\">透视表不更新</span></td><td>数据陈旧</td><td>数据源范围未更新</td><td>重新运行宏更新数据源</td></tr><tr><td><span data-type=\"strong\">NT函数失效</span></td><td>公式错误</td><td>宏功能未启用</td><td>保存为.xlsm格式并启用宏</td></tr></tbody></table><div class=\"protyle-action__table\"><div class=\"table__resize\"></div><div class=\"table__select\"></div></div></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div><div data-node-id=\"20251007103858-2h0t16a\" data-node-index=\"59\" data-type=\"NodeParagraph\" class=\"p\" updated=\"20251007103858\"><div contenteditable=\"true\" spellcheck=\"false\"></div><div class=\"protyle-attr\" contenteditable=\"false\"></div></div>"} |