表の交差した位置の値を表示するには (その1) -INDEX 関数- の続きです。
いろいろ重複してもよろしくないので、まずは↑をご覧になっていただいて、
今回は「サイズと場所を入れるだけにしたい」を解決したいと思います。


前回までの状態だと、INDEX 関数で使用するための行番号と列番号は、
セル C4 とセル F4 に手入力をするのが前提になっています。これを MATCH 関数を使って
自動的に表示されるようにします。1Excel201108-003.jpg


step1Excel201108-003.jpg


MATCH 関数は、指定した項目が指定したセル範囲のどこにあるのかを求めることができる関数です。
もう少し動きに沿って書くならば、ヘルプにあるように、
「セル範囲内で指定された項目を検索して、その項目の相対的な位置を返してくれる関数」です。
数式で下記のように引数を指定します。


MATCH (検査値, 検査範囲,[照合の型])
検査値, には、検査範囲のなかで位置を探したい値やその値が入力されているセルを指定します。
 

検査範囲には、検索するセル範囲を指定します。


[照合の型] には、「以下」「完全一致」「以上」の 3 つの照合の種類から選んで指定します。
 

「以下」を指定するには「1」(または省略)、「完全一致」を指定するには「0」、
「以上」を指定するには「-1」を指定します。


「1」を指定または省略をして何も指定しなかった場合、検査値以下の最大の値が検索されます。
ようは、「100」「200」「300」という順序で縦に並んでいるとき、「250」を検索すると「200」と
同じ行の位置が返ってきます。
このとき、「100」「200」「300」というように検査範囲のデータは昇順に並んでいなければなりません。
「-1」を指定した場合、検査値以上の最小の値が検索されます。
 

たとえば、「300」「200」「100」という順序で縦に並んでいるとき、「250」を検索すると「300」と
同じ行の位置が返ってきます。
 

このとき、「300」「200」「100」というように検査範囲のデータは降順に並んでいなければなりません。
 

このあたりはヘルプをもとに、少しやわらかく書き直しているので詳細を確認したい方はヘルプを
見てくださいね。
MATCH 関数は、私たちが探しに行く場所 (セル範囲) を特定して、目的のデータがある場所を見つけ、
そのセルの位置がセル範囲の一番上から数えて何番目か数えるのと同じような動きをし、答えを
返してくれる関数ということです。


step2Excel201108-003.jpg


ここでは、MATCH 関数を使って INDEX 関数で必要となる行番号と列番号を求めます。
この数式ができてしまえば、サイズと場所を入力するだけで料金を知ることができるように
なりますから、前回のように行番号と列番号を手入力しなおさなくてもよくなりますよ。


1.セル C2 に入力されているサイズの行番号を求めます。
セル C4 に「=MATCH(C2,B8:B13,1)」となるように数式を作成します。(照合の型「1」は省略可)
C2 の値がセル範囲 B8:B13 の上から何番目の位置にあるのかが表示されます。

2Excel201108-003.jpg
 

2.同じようにセル F2 に入力されている場所の列番号を求めます。
セル F4 に「=MATCH(F2,C7:L7,0)」となるように数式を作成します。(照合の型は省略可)


F22 の値がセル範囲 C7:L7 の左から何番目の位置にあるのかが表示されます。
3Excel201108-003.jpg

前回作った INDEX 関数による数式はそのまま手を加えていません。
行番号と列番号が指定されているセルに値が直接入っているか、数式が入っているかの違いだけです。
4Excel201108-003.jpg

 


これでサイズと場所を入力するだけで、行番号と列番号を入れなおさなくても料金が
求められるようになりました。
INDEX 関数と MATCH 関数は組み合わせて使うことが多いです。
 

だからといっていきなり組み合わされた長い数式を見てもわかりにくいかな、と思って
分けました。
MATCH 関数は結果を求めてそれで終わり、という関数ではなくて結果をほかの数式内で
使うことが多いです。


「行番号や列番号が表示されているセルが邪魔」というかたは、
料金のセルに INDEX と MATCH をネストした数式をかけばよいですよ。
これでわかる方はお試しを。わからないなー、別に急がないけど。という方は次回以降をご覧ください。


石田かのこ