报价模型循环引用与表格设计审计
审计日期:2026-07-06
审计对象:
F:\Documents\Codex\大宗矿产品报价系统\乍得钨矿锑矿分金属计价_公共物流报价系统V2.xlsxF:\Documents\GitHub\Critical-Minerals-Trading-OS\GCTS_Metals_Pricing_Engine_V1.xlsx- 打开的是修正前的旧版
GCTS_Metals_Pricing_Engine_V1.xlsx。 - Excel同时打开了另一个仍有循环引用的工作簿。
- Excel保留了上一次会话的循环引用提示。
- 文件曾经打开过含自引用公式的版本,未完全关闭Excel进程后再次打开。
- 增加
Scenario_Analysis,把敏感性分析从主模型拆出去。 - 增加
Incoterms_Config,避免FOB、CFR、CIF成本重复或遗漏。 - 增加
Byproduct_Credits,尤其用于铜精矿、铅锌、锡钨伴生矿。 - 增加
TC_RC,尤其用于铜精矿真实冶炼报价。 - 增加
Assay_Adjustment,处理装船样与到港复检差异。 - 关闭所有已打开的Excel窗口。
- 重新打开最新文件:
- 如果仍提示循环引用,在Excel中查看:
- 记录Excel显示的具体单元格地址,再回填到本审计报告。
1. 循环引用结论
使用公式依赖图检查后,两个文件当前版本都没有检测到真实循环引用。
| 文件 | 公式数量 | 直接自引用 | 依赖环路 | 结论 |
|---|---|---|---|---|
| 原始V2报价系统 | 158 | 0 | 0 | 未发现循环引用 |
| GCTS V1报价引擎 | 345 | 0 | 0 | 未发现循环引用 |
同时检查了工作簿内部计算链:
| 文件 | xl/calcChain.xml |
计算属性 |
|---|---|---|
| 原始V2报价系统 | 不存在 | 无 calcPr |
| GCTS V1报价引擎 | 不存在 | fullCalcOnLoad=1 |
因此,如果Excel打开时仍提示循环引用,较大概率来自:
2. 已修正的问题
新版GCTS V1报价引擎早期版本中,模型表曾出现以下错误:
Margin / DMT = B28 / B8
Gross Margin % = B28 / B21
Recommended Market = IF(B29>D29,...)
其中 B28 = B28 / B8 是典型自引用,会触发循环引用。
已修正为:
Net Margin = Sales Revenue - Total Cost
Margin / DMT = Net Margin / DMT_Qty
Gross Margin % = Net Margin / Sales Revenue
Recommended Market = IF(International Margin/DMT > Domestic Margin/DMT USD, "International", "Domestic")
以 WO3_Model 为例,当前正确公式为:
B27 = B21 - B26
B28 = B27 / B8
B29 = B27 / B21
B30 = IF(B28>D28,"International","Domestic")
3. 原始V2文件的表格设计问题
原始V2文件公式没有形成循环,但有几类结构性问题。
3.1 输入、计算、敏感性分析混在同一张表
Tungsten_WO3 和 Antimony_Sb 中,左侧是主模型,右侧又放了品位、Payability、收入、毛利敏感性表。这个设计可以快速查看情景,但容易让维护者误以为右侧表格也参与主模型。
建议:未来把敏感性分析独立到 Sensitivity 或 Scenario_Analysis 工作表。
3.2 物流表存在费用项,但没有全部进入主模型
Logistics_Common 中列出了:
Marine Insurance
Banking / LC / Remittance
Contingency
但原始V2金属模型主要读取:
Total USD/DMT
Total Fixed USD/lot
也就是说,部分 %货值 或 %成本 类费用没有完整进入主模型。这不是循环引用问题,但会低估总成本。
建议:新版模型已增加:
Value Based Fees = Sales Revenue × Total % Value
Contingency = Cost Base × Total % Cost
3.3 缺少湿吨、水分、干吨转换
原始V2直接以DMT作为数量输入。真实矿产品贸易中,WMT、Moisture和DMT必须分开:
DMT = WMT × (1 - Moisture)
建议:新版模型已把 WMT/Moisture/DMT 放入每个矿种模型。
3.4 国内销售和国际销售单位混杂
原始V2同时比较国际USD和国内RMB,逻辑方向正确,但需要始终保留一个统一USD口径用于推荐市场,否则很容易拿 RMB/DMT 和 USD/DMT 直接比较。
建议:新版模型增加 Domestic USD 列,市场推荐只比较 USD口径的 Margin/DMT。
3.5 上游报价口径需要更清楚
原始V2使用 Upstream_FOB_A_USD_DMT,但不同项目中上游可能是:
Mine gate
Warehouse
FOB Douala
CFR/CIF buyer port
如果上游报价口径变化,物流费用是否应加入或扣除也会变化。
建议:未来在 Commodity_Config 或交易输入页增加:
Purchase Incoterms
Sales Incoterms
Logistics Scope
4. GCTS V1文件的剩余设计风险
当前GCTS V1已经修正循环引用,但仍是V1级模型,不是最终版。
后续建议继续优化:
6. 增加 Data_Validation 下拉框,限制Enabled、Commodity、Formula Type等字段。
5. 建议操作
F:\Documents\GitHub\Critical-Minerals-Trading-OS\GCTS_Metals_Pricing_Engine_V1.xlsx
Formulas -> Error Checking -> Circular References