行番号と列番号が不明でも、MATCH関数とINDEX関数の組み合わせで目的のセル情報を取得することができます。
手順は以下のとおりです。
- MATCH関数を使って行番号と列番号をそれぞれ取り出す
- 取り出した行番号、列番号を使ってINDEX関数で参照するセルの位置を指定する
サンプルデータを使って説明します。
| 商品 \ 店舗 | 渋谷店 | 名古屋店 | 大阪店 | 福岡店 |
|---|---|---|---|---|
| キーボード | 320 | 280 | 310 | 290 |
| マウス | 210 | 195 | 230 | 220 |
| モニター | 150 | 140 | 160 | 155 |
| プリンター | 90 | 100 | 85 | 95 |
このような集計表が、月ごとに別シートで存在するとします。
やりたいこと
月ごとの、福岡支店のモニター売上を取り出したい。
ただし、福岡店が何列目にあるのか、モニターが何行目にあるのかは、集計月ごとにバラバラである
常に「福岡店」が5列目にあり、「モニター」が4行目にあるのだとしたら、各シートの集計は比較的簡単に行えますが
福岡店が何列目にあるのか、モニターが何行目にあるのかは、集計月ごとにバラバラである
状況だと、取り出したいセルの「行番号と列番号」が不定となるため、セルの指定に工夫が必要です。
MATCH関数で「福岡店」の相対的な位置(列番号)を取得する
MATCH関数は「範囲内での相対的な位置を表す数値」を返します。
MATCH関数
=MATCH(検査値, 検査範囲, 照合の種類)
- 検査値
- 検査範囲
- 照合の種類
=MATCH("福岡店",1:1,0)
// 結果: 5
とすると、選択した一行目の中で「福岡店」と一致するセルが、選択した行範囲の左から何番目のセルか?を取得できます。
「モニター」の相対的な位置(行番号)も同様に取り出します。
=MATCH("モニター",A:A,0)
// 結果: 4
INDEX関数で「福岡店」列番号と「モニター」行番号の交点にあるセル情報を取得する
INDEX関数は、参照範囲の行と列の交点にあるデータを返します。
INDEX関数
=INDEX(参照範囲, 行番号, 列番号)
ここで、以下の考え方が役に立ちます。
- 行番号と列番号は固定の値(数値)でなくてもよい。
- 行番号と列番号のどちらか片方、または両方を、MATCH関数で取得できる
INDEX関数の行番号と列番号に、それぞれ「モニター」行番号と「福岡店」列番号を取得するMATCH関数を数式ごと入れ込みます。(行番号と列番号が逆にならないように注意)
=INDEX(参照範囲,MATCH("モニター",A:A,0),MATCH("福岡店",1:1,0))
これで、住所不定の「福岡店」と「モニター」の交点」にあるセル情報を取得できるようになりました!
「INDEX関数とMATCH関数の組み合わせ」は、頭の片隅においておくと便利です。参考にしてみてください!