按 SKU 与区域查价(还带着扫描脏值)
题目
题目说明
同一个 SKU 在不同区域有不同价格,所以只有一个键不够。价目表在 A2:C7,扫描进来的 SKU 在 F1(带空格),区域在 F2。把价格填进 Price 单元格 F3。
两个条件,而且 SKU 必须在公式里清理——扫描器写出来的是小写加空格。
题目数据
用表格查看整份数据(可选中、可复制)
| A | B | C | E | F | |
|---|---|---|---|---|---|
| 1 | SKU | Region | Price | SKU scanned | sku-102 |
| 2 | SKU-101 | US | 49 | Region | EU |
| 3 | SKU-102 | EU | 19.5 | Price | |
| 4 | SKU-102 | US | 21 | ||
| 5 | SKU-103 | EU | 24.99 | ||
| 6 | SKU-101 | EU | 52 | ||
| 7 | SKU-103 | US | 25.5 |
知识点
当答案是数字、而且每个条件都是等于时,SUMIFS 可以当查找用:它返回同时满足所有条件的行的总和,也就是唯一那笔价格。先用 TRIM(UPPER(F1)) 清理键。INDEX + MATCH 搭配相乘条件是数组写法,答案为文本时就得用它。
解题思路
答案写在 F3。提交时我们会换 3 组输入重跑你的公式,写死数字一定过不了 —— 公式必须跟着单元格走。
- 目标单元格是 F3
- 先清理键:TRIM(UPPER(F1))
- SUMIFS 带两组区域/条件就等于查找
- 公式形状:=SUMIFS(?, ?, ?, ?, ?)
官方解法
展开 2 种解法(建议先自己试一次)
解法 1:SUMIFS 当双条件查找
=SUMIFS($C$2:$C$7, $A$2:$A$7, TRIM(UPPER(F1)), $B$2:$B$7, F2)
TRIM(UPPER(" sku-102 ")) 得到 "SKU-102";同时符合它和 EU 的只有一行,价格 19.50。查不到时返回 0,所以当 0 也是合法价格时要另外处理。
解法 2:INDEX + MATCH 走两个条件
=INDEX($C$2:$C$7, MATCH(1, ($A$2:$A$7=TRIM(UPPER(F1)))*($B$2:$B$7=F2), 0))
MATCH(1, ...) 找出相乘后同时为 1 的第一行。答案相同,而且它不像 SUMIFS 只能取数字,取文本也行;找不到时返回 #N/A 而不是安静的 0。
函数指南
常见问题
要查的值同时取决于两列,怎么写?
答案是数字时用 =SUMIFS(值, 列1, 键1, 列2, 键2);是文本时用 =INDEX(值, MATCH(1, (列1=键1)*(列2=键2), 0))。
为什么 SUMIFS 返回 0 而不是错误?
没有匹配的行时它汇总了空集合,就是 0。若 0 可能是真实价格,用 =IF(COUNTIFS(...)=0, "not found", SUMIFS(...)) 包起来。