質問: 【excel】 index ,match でいいのか。該当が複数ある場合 項目の検索で行き詰まっています。 a1 から a30 に名前 b1 から b30 に得点 が入力されています。 b31 に最高点を表示するのは、max 関数でできました。 b32 にその最高点をとった人物が誰かを表示するのに =index($a$1:$a$30,match($b$31,$b$1:$b$30),1) と入力したら、 該当者が1人しかいない時は問題ないのですが、複数いる場合でも1人しか表示されません。 該当が複数ある場合の出し方は他に方法があるのでしょうか? どなたか力を貸してください。 よろしくお願いします。
回答: #4です。 >どうかじらさずに、ストレート・・ 邪推しないでください。再々同類質問があるものだからヒントだけにしたもの。 こういうタイプ別に、どういうものがあるかというのも参考になると思ったから挙げた。 googleでいま「imogasi方式」で照会すると、546件あるということらしい。 (また良ければokwaveででも照会してください。) 最近の質問には「照会してください」が多いが、実際内容を回答したもので過去のものは出にくくなっているが http://dospara.okwave.jp/qa3292030.html http://virus.okwave.jp/qa3295728.html など ーー 要は (1)条件に該当する(この質問では最大値)に当たる値が入っている行に、上の行から連番を振る(このために作業列を使う) 理由があって、第1行目に行挿入する. 作業列をe列とするとe2に =if(b2=$b$32,max($e$1:e1)+1,"")と入れてe31まで式を複写する。 (2)その1,2,3・・の番号を、行番号の33,34,35・・ とを関連付けて、33行には、作業列がrow()-32(すなわち1)の 行をmatch関数で探して、index関数で採ってくる。 1行行挿入したので、33行に =index($a$2:$a$31,match(row()-32,$e$2:$e$31,0),1) これを、b32と同じ値の行数だけ式を複写する。 実際は余分行に式を複写しても、#n/aを出さないように、if関数を用いて、b32の値のb2:b31までのcountif数より大なら空白というのを、式に組み込むが、#3のご回答にも出ているので略。