# 两种满减规则：可编辑公式练习

`discount-rules.xlsx` 是编辑自拟的练习文件，不是真实促销方案，也不是模型输出。
无需运行脚本，直接用支持 XLSX 的表格软件打开；主表的公式可以编辑。

## 先看主表

工作表“满减练习”的 A2:A8 是输入，B:E 是公式。
输入范围约定为 0–10000 元之间的整数，含端点；不处理小数、税、运费、叠加或封顶。
修改 A2:A8 中的金额，即可观察同一输入按两种规则的差别。
两种方案独立比较，不同时叠加；D、E分别是对应方案的实付。

第一行计算公式：

```text
B2 =IF(A2>=100,20,0)
C2 =INT(A2/100)*20
D2 =A2-B2
E2 =A2-C2
```

向下填充至第8行，行号随行变化。不能只给C列套用B列的IF公式。

| 订单金额 | 单次满减 | 每满一档减免 | 单次实付 | 累计实付 |
| ---: | ---: | ---: | ---: | ---: |
| 0 | 0 | 0 | 0 | 0 |
| 99 | 0 | 0 | 99 | 99 |
| 100 | 20 | 20 | 80 | 80 |
| 199 | 20 | 20 | 179 | 179 |
| 200 | 20 | 40 | 180 | 160 |
| 250 | 20 | 40 | 230 | 210 |
| 1000 | 20 | 200 | 980 | 800 |

单次满减只检查一次是否达到门槛，所以200元时B列仍是20。
累计减免按完整档数计算，200元时C列必须是40，250元也还是40。

## 一处有用的错例

工作表“错例对照”单独放了一行200元：
错误累计公式 `=IF(A2>=100,20,0)` 实际算出20；
改正后 `=INT(A2/100)*20` 实际算出40。
对应的错误实付是180，改正实付是160。
这是刻意编写的错误对照，不声称某个AI犯过这个错误。

## 让AI照着规则写

`prompt.txt` 是含全部规则、输入数据和交付要求的完整提示词。
可以直接打开文本文件复制，不需要保存正文里的长段落。

## 文件实际核验范围

成品已用 LibreOfficeDev 26.8.0.0.alpha0 实际打开重算并另存 XLSX，
随后读取公式与缓存值，核对主表7组金额和错例对照的20/40、180/160。
这验证的是这些自拟数据的表格计算，没有调用模型，也没有运行 Microsoft Excel。

A2:A8 设置了0–10000整数的停止式录入验证。
它是普通手工输入的提示，复制粘贴、不同表格软件或后续编辑可能绕过；
不是任意输入都被可靠阻止的保证。超范围、负数和小数都不在本例。
表中只有这7行计算公式，扩展行时须自行向下填充公式和录入验证。
