全部練習題 / 查詢與參照

依 SKU 與區域查價(還帶著掃描髒值)

困難 查詢與參照
題目說明
提示 0/4
官方解法 2
–
測試案例
1
2
3
重設
提交
fx
A
B
C
D
E
F
G
1
2
3
4
5
6
7
8
9
10
正在載入互動式試算表...
正在準備儲存格資料與公式求解引擎
○ 就緒 請在反白的目標儲存格輸入公式,然後點「提交」。

題目

題目說明

同一個 SKU 在不同區域有不同價格,所以只有一個鍵不夠。價目表在 A2:C7,掃描進來的 SKU 在 F1(帶空白),區域在 F2。把價格填進 Price 儲存格 F3。

兩個條件,而且 SKU 必須在公式裡清理——掃描器寫出來的是小寫加空白。

題目資料

用表格檢視整份資料(可選取、可複製)
這道題的資料表
ABCEF
1SKURegionPriceSKU scanned sku-102
2SKU-101US49RegionEU
3SKU-102EU19.5Price
4SKU-102US21
5SKU-103EU24.99
6SKU-101EU52
7SKU-103US25.5

觀念解析

當答案是數字、而且每個條件都是等於時,SUMIFS 可以當查表用:它回傳同時滿足所有條件的列之總和,也就是唯一那筆價格。先用 TRIM(UPPER(F1)) 清理鍵。INDEX + MATCH 搭配相乘條件是陣列寫法,答案為文字時就得用它。

解題思路

答案寫在 F3。送出時我們會換 3 組輸入重跑你的公式,寫死數字一定過不了 —— 公式必須跟著儲存格走。

  1. 目標儲存格是 F3
  2. 先清理鍵:TRIM(UPPER(F1))
  3. SUMIFS 帶兩組範圍/條件就等於查表
  4. 公式形狀:=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(...)) 包起來。