全部練習題 / 查詢與參照

依開關指定的價目表取價(IF + 查表)

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

題目

題目說明

兩份價目表並排:舊價在 A2:B5、新價在 D2:E5,由 H2 這個開關決定用哪一份——它寫著 "New" 或 "Old",SKU 在 H1。把價格填進 Price 儲存格 H3。

同一條公式要同時讀 SKU 與開關;不能用輔助欄放 IF,也不准把價格搬來搬去。

題目資料

用表格檢視整份資料(可選取、可複製)
這道題的資料表
ABDEGH
1SKUOld priceSKUNew priceSKUSKU-103
2SKU-10149SKU-10152Price listNew
3SKU-10219.5SKU-10221Price
4SKU-10322.5SKU-10324.99
5SKU-10489SKU-10495

觀念解析

IF 選的是「一個查表」,不只是選值:每個分支都是一次完整的 VLOOKUP,各自打一張表。因為兩張表是獨立範圍,調價時不需要重新排序。INDEX + MATCH 是同一個思路,只是位置是明著找出來的,兩張表欄位順序不同時更好讀。

解題思路

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

  1. 目標儲存格是 H3
  2. H2 的開關決定要用哪張表
  3. IF 的每個分支都是一整條 VLOOKUP
  4. 公式形狀:=IF(?, VLOOKUP(?, ?, ?, ?), VLOOKUP(?, ?, ?, ?))

官方解法

展開 2 種解法(建議先自己試一次)

解法 1:IF 在兩條 VLOOKUP 之間選

=IF($H$2 = "New", VLOOKUP($H$1, $D$2:$E$5, 2, FALSE), VLOOKUP($H$1, $A$2:$B$5, 2, FALSE))

H2 是 New 時從新價表取得 24.99;改成 Old,同一格就變成 22.50。H1、H2 用 $ 鎖住,公式複製時兩個參照都不會跑掉。

解法 2:IF 在兩組 INDEX MATCH 之間選

=IF($H$2 = "New", INDEX($E$2:$E$5, MATCH($H$1, $D$2:$D$5, 0)), INDEX($B$2:$B$5, MATCH($H$1, $A$2:$A$5, 0)))

同樣的開關,但回傳欄是直接指名而不是數欄號。兩張表欄位順序不同時特別好用。

函數指南

相關練習

常見問題

怎麼從兩張表其中之一取值?

把整條查表放進每個分支:=IF(開關="New", VLOOKUP(鍵, 新表, 2, 0), VLOOKUP(鍵, 舊表, 2, 0))。

為什麼不把兩張表併成一張?

多數情況下應該併。只有在兩張表結構不同,或舊表必須凍結供歷史報表使用時,才保持分開。