練習問題一覧 / 検索・参照

SKU と地域の2条件で価格を引く(スキャン値の整形つき)

むずかしい 検索・参照
問題文
ヒント 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 でも地域ごとに価格が違うため、キーは1つでは足りません。価格表は A2:C7、スキャンした SKU は F1(空白つき)、地域は F2 にあります。価格を Price セル F3 に入れてください。

条件は2つ。しかも 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 に範囲と条件を2組渡すと検索になる
  4. 形:=SUMIFS(?, ?, ?, ?, ?)

模範解答

模範解答を表示(2 通り・まずは自分で試してみましょう)

方法1:SUMIFS を2条件の検索として

=SUMIFS($C$2:$C$7, $A$2:$A$7, TRIM(UPPER(F1)), $B$2:$B$7, F2)

TRIM(UPPER(" sku-102 ")) は "SKU-102" になり、EU と同時に一致する行は1つだけなので 19.50 です。一致しないときは 0 が返るため、0 が正当な価格の場合は注意が必要です。

方法2:INDEX + MATCH を2条件で

=INDEX($C$2:$C$7, MATCH(1, ($A$2:$A$7=TRIM(UPPER(F1)))*($B$2:$B$7=F2), 0))

MATCH(1, ...) は掛け算で両方 1 になる最初の行を探します。答えは同じで、SUMIFS と違い文字列も取得でき、見つからないときは静かな 0 ではなく #N/A を返します。

関数ガイド

関連する練習問題

よくある質問

2つの列で決まる値を引くには?

答えが数値なら =SUMIFS(値, 列1, キー1, 列2, キー2)、文字列なら =INDEX(値, MATCH(1, (列1=キー1)*(列2=キー2), 0)) です。

SUMIFS がエラーではなく 0 を返すのはなぜ?

一致する行がないと空の合計になり、それが 0 だからです。0 が実在しうる価格なら =IF(COUNTIFS(...)=0, "not found", SUMIFS(...)) と包みます。