报价单两列数据为啥不一致,由请AI找原因
2026-01-29
我把你这个表(截图对应的 「蔬菜」sheet)按“左边公式区 vs 右边数据源区”拆开看了一遍,合计不一致的根因基本就两类:
1)VLOOKUP 只按“商品名称”匹配:右侧出现“同名不同单位/规格”,就会拉错价
你左边黄色列(H列)公式是类似:
=VLOOKUP(C4,$J$4:$M$162,4,0)
也就是 只用 C列「商品名称」去右侧 J 列找,找到后取 M 列价格。
这在“商品名称唯一”时没问题;一旦右侧同一个名称出现两次(单位不同、规格不同),VLOOKUP 永远取“第一次出现”的那条,就会造成金额合计对不上。
你这个「蔬菜」里就有一个明确的“同名两条”
右侧数据源里:「鲜白玉菇」出现了 2 次:
一条是 盒(价格 3.5)
另一条是 斤(价格 8)
左侧明细里「鲜白玉菇」也有两条,而且其中一条单位是 Kg(你表里 Kg 通常是要对应到右侧“斤”的逻辑,再做 /2 换算)。
结果就是:
左侧那条 单位=Kg 的「鲜白玉菇」,H列 VLOOKUP 因为只看名称,匹配到了右侧第一条“盒 3.5”,而不是应该匹配的“斤 8”。
这一个点就足够导致你说的“蔬菜金额合计不一致”。
✅ 结论:你蔬菜合计不一致,至少有一部分就是这个“同名不同单位”导致拉价错误。
2)右侧价格存在“非数字”(例如 “-”、带文字备注):汇总时会被当文本,导致合计偏差
你提到“肉类金额”也不一致,我检查了 「猪肉」sheet,右侧数据源里确实存在 价格为 “-” 的项(比如「猪尾巴(短)」那行)。
这种情况会带来两个常见问题:
VLOOKUP 拉回的是文本 “-”
你后面金额如果是
数量*单价或做SUM,会出现:该行金额变成 0 / 空 / 报错
合计自然和你肉类那边“真实数据口径”不一致
✅ 结论:肉类合计不一致,除了“同名”问题外,也高度怀疑存在这种“价格是文本”的行,把合计搞偏了。
你该怎么修:两步就能根治(建议按这套做)
A. 把匹配键从“单字段(名称)”升级为“多字段(名称+单位,必要时再加规格)”
最稳的做法:做一个辅助键(建议左右两边都做)
1)左侧新增一列 Key(比如在B/C旁边)
=TRIM(C4)&"|"&TRIM(E4)
(名称 + 单位)
2)右侧也新增一列 Key(在右侧名称列旁边)
=TRIM(J4)&"|"&TRIM(L4)
(名称 + 单位)
3)用 Key 去查价(替换原 VLOOKUP)
=XLOOKUP(左Key, 右Key列, 右价格列, "")
如果你只能用 VLOOKUP:就让右侧 Key 列放在查找区域第一列,再 VLOOKUP。
这样「鲜白玉菇|盒」和「鲜白玉菇|斤」就不会串。
B. 价格列强制数字化 + 兜底处理(避免 “-”/空/文本 把合计弄歪)
对拉回来的单价列做一层清洗:
把
-统一替换为 0 或空(看你业务口径)公式兜底示例:
=IFERROR(VALUE(查回来的单价),0)
这样肉类合计不会被文本污染。
你现在立刻就能自查的“定位法”(不用改公式也能找出所有坑)
1)找右侧是否有同名
在右侧名称列做:=COUNTIF(右侧名称列, 当前名称)>1
为 TRUE 的就是风险项(像「鲜白玉菇」这种)。
2)找单价是否为文本
在单价列做:=ISTEXT(单价值)
为 TRUE 的基本就是 “-” 或带备注的那种。
发表评论: