担当と四半期で1つの値を引く(INDEX MATCH の2次元検索)
問題
問題文
営業ダッシュボードで必要なのは1つの数字です。F1 の担当の F2 の四半期の値で、表は B2:D4、担当の見出しは A2:A4、四半期の見出しは B1:D1 にあります。Result セル F3 に値を入れてください。セルごとに式を書き分けず、1つの式で両方の見出しを読みます。
2つの見出しはどちらも式で探します。F1 や F2 を変えたら式を触らずに答えが変わる必要があります。
問題のデータ
表でデータ全体を見る(選択・コピーできます)
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Rep | Q1 | Q2 | Q3 | Rep | Ben |
| 2 | Ada | 120 | 150 | 180 | Quarter | Q3 |
| 3 | Ben | 90 | 110 | 140 | Result | |
| 4 | Cleo | 200 | 180 | 210 |
ポイント解説
INDEX の中に MATCH を2つ入れます。1つ目が担当の見出しの中で行を、2つ目が四半期の見出しの中で列を探し、INDEX が行と列の位置で値を返します。クロス集計の定番で、行や列を並べ替えても壊れません。
解き方のヒント
回答は F3 に入力します。送信時は 3 通りの入力で数式を再実行するので、数値を直接書くと必ず失敗します。数式はセルを参照してください。
- 対象セルは F3
- INDEX の第1引数は表の本体 B2:D4
- 行は MATCH(F1, A2:A4, 0)、列は MATCH(F2, B1:D1, 0)
- 形:=INDEX(?, MATCH(?,?,?), MATCH(?,?,?))
模範解答
模範解答を表示(2 通り・まずは自分で試してみましょう)
方法1:INDEX と2つの MATCH
=INDEX(B2:D4, MATCH(F1, A2:A4, 0), MATCH(F2, B1:D1, 0))
MATCH("Ben", A2:A4, 0) は 2、MATCH("Q3", B1:D1, 0) は 3 なので、INDEX は B2:D4 の2行3列目、140 を返します。
方法2:VLOOKUP の列番号に MATCH
=VLOOKUP(F1, A2:D4, MATCH(F2, B1:D1, 0) + 1, FALSE)
MATCH が四半期の見出しを B1:D1 内の位置(3)に変え、+1 で VLOOKUP の列番号に合わせます(VLOOKUP は A 列から数えるため)。答えは INDEX MATCH と同じですが、キーが左端の列にある必要があり、この +1 を忘れがちです。
関数ガイド
よくある質問
行と列の両方で値を探すには?
=INDEX(表, MATCH(行見出し, 行見出しの範囲, 0), MATCH(列見出し, 列見出しの範囲, 0)) と書きます。MATCH が2つ、INDEX が1つです。
ここで VLOOKUP を使わない理由は?
VLOOKUP でも列番号に MATCH(F2, 見出し行, 0) を渡せば可能です。ただしキーが左端の列にある必要があり、INDEX MATCH のほうが適用範囲が広くなります。