依 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(...)) 包起來。