• ベストアンサー

INDEX・MATCH関数について

エクセルでランキングを作成しています。 いくつかのエクセルファイルを参照し その中のデータをランキング化して表示させたいと思っています。 簡単に言うとテストの得点表みたいな感じです。  1位  太郎君(INDEX+MATCH) 95点(LARGE)  2位  一郎君(INDEX+MATCH) 85点(LARGE) ※()の中は使っている関数です 上記のような表示はLARGE関数とINDEX・MATCH関数で作成できたのですが 太郎君と一郎君の得点が同じ場合に名前の欄が同じ名前になってしまいます。 同じ数値のものがいくつかある場合に 名前の表示をすべてするにはどうすればいいでしょうか? 1位  太郎君  100点 2位  一郎君  100点 こんな感じで表示したいと思っています。 どなたかご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#52504
noname#52504
回答No.4

元表の配置等が判れば数式一発で引くこともできなくはなさそうですが、 いずれにしろ非常に技巧的な処理になりそうです。 今回のようなケースでは、 【参照(並べ替え)用に調整した得点】をあらかじめ別に用意した方が簡単でしょう。 例えば、元表の本来の得点列とは別に 【得点に出席番号(あるいは行番号等)の1/1000を加えた値の列】を作業列として用意しておいて、 その列について、これまでと同様の処理を行えば重複は生じません。 その上で、必要に応じて端数を切り捨て再整形するか、表示形式を調整すればよろしいかと。

triple-v
質問者

お礼

回答ありがとうございます。 今回はdeus_ex_machinaさんの方法が1番簡単そうだったので deus_ex_machinaさんの方法で改善させて頂きました。 ありがとうございます。

その他の回答 (3)

noname#176215
noname#176215
回答No.3

mike_gさんのおっしゃる通りで 同じ点数なのに順位に差を付けるのは かわいそうな話ですね。 まずは重複のない点数表を作成して それに対応する名前を連名で表示 させてあげたら良いのではないでしょうか。多少面倒ですが。 具体的な例示があれば 数式での回答も可能とは思いますが ひとまず Excel:点数の重複がないランキング表を作る http://www.geocities.jp/chiquilin_site/data/050916_ranking.html ご参考まで。

triple-v
質問者

お礼

回答ありがとうございます。 参考のURL拝見させて頂きました。 なかなかややこしいんですね(汗) なんとか頑張ってみます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

関数は1つの値しか返さない(返せない、大原則、配列数式の特殊な使い方の場合を除いて)。 それによって、MATCH(やVLOOKUPも)初出しか検出しない だから同点でも、何らかの「差別化」をしないとできないしょう。 (別の評点要素があればそれによることも良いが。) 下記では出現順で、という例です 例データ データはA,B列 C、D列が作業列、 結果はE,F列 名前  点数  修正点数 修正点数順位 順番表(E,F列組で) a 23 231 2 d 24 b 18 181 5 a 23 c 15 151 8 f 19 d 24 241 1 e 18 e 18 182 4 b 18 f 19 191 3 i 15 g 15 152 7 g 15 h 3 31 9 c 15 i 15 153 6 h 3 C列C1の式 =(B1&TEXT(COUNTIF($B$1:B1,B1),"0"))*1 D列D1の式 =RANK(C1,$C$1:$C$9) E列E1の式 =INDEX($A$1:$A$9,MATCH(ROW(),$D$1:$D$9,0),1) F列F1の式 =INDEX($B$1:$B$9,MATCH(ROW(),$D$1:$D$9,0),1) それぞれ第1行の式を第9行まで式を複写 結果 上記の通り。 ーー 作業列を使うのがイヤだが、もし使わない式を考えると、できないか 、ものすごく難しく長い式になるでしょうから、我慢してください。

triple-v
質問者

お礼

回答ありがとうございます。 作業列を使う方法はネットで見つけ出したのですが ややこしくて自分にはできませんでした。 結果的にはLARGEで参照する元の数値に0.0001をつけ セル1つ下にさがるごとに+0.0001をつけて 差別化する方法をとりました。

noname#204879
noname#204879
回答No.1

》 1位  太郎君  100点 》 2位  一郎君  100点 》 こんな感じで表示したいと… 同じ得点なのに「一郎君」を2位とする条件は何ですか? 一郎君の代わりに(?)質問しています。「私も1位でしょ!」(^_^)

triple-v
質問者

お礼

回答ありがとうございます。 私の説明不足でした・・・。 ともに表示は1位でも構わないのですが 名前を全員分表示したいということです。 説明がヘタクソですいませんでした。

関連するQ&A

  • エクセルでINDEX+MATCH関数について

    INDEX+MATCH関数について B1:D7、F1:H7には次のようなデータが入力されていて J1:M3のようなものを作成したいのですが上手くいきません。 J2にコード番号を入力し、品名を表示させ、数を入力し、価格を表示させる ・・・ということをしたいのですが、上手くいきません。 K2には  =INDEX((C2:D7,G2:H7),MATCH(J2,B2:B7,0),1,LEFT(J2,1)) という関数が入っていて K2にはりんご M2には500  と表示され上手くいきます。 コード番号100番台は上手くいくのですが、200番台になると#N/Aとエラー表記になります。 どこをどう修正すれば上手くいくのでしょうか。 教えてください。

  • INDEXとMATCH関数について。

    業務で使用しているファイルにINDEXとMATCHを組み合わせた関数を使っています。 =INDEX(Sheet4!E2:E999,MATCH(Sheet1!F17,Sheet4!A2:A999,0)+2,0) です。 教えて頂きたいことは、 ・上記の関数の説明(詳細)この関数はどういったしくみになっているのか。 ・セルが空白のときに#N/Aを表示させないこと。 ・完全一致型にしたいこと。 この3点を教えて頂けませんか?よろしくお願いします。

  • INDEX関数SMALL関数を使って空白行を詰める

    シート1にINDEX関数SMALL関数を使って空白行を詰める表を作成したのですが詰めた表をシート2に表示することはできないのでしょうか。  =IF(COUNTIF($A4:$A4,0)=0,MAX(D$3:$D3)+1,"")  =IFERROR(INDEX(A:A,MATCH(ROW()-3,$D:$D, )),"")この表をシート2に表示する方法

  • エクセル2007 indexについて

    はじめて投稿し、めちゃくちゃど素人で緊張しています。誤字脱字、内容説明下手ですが、せっぱつまっているので、教えてください(>_<)エクセルもど素人のためお願いします。 下記の内容をエクセルで作成しました。点数の空欄に例1と例2の内容を反映させたいと思っています。どうしたら、いいのでしょうか?例1だけなら、下記の関数が完成できたのですが、例2も反映させたいとなると関数の知識がない私には難しくて・・・また、A2の数字以外がはいると#NAとなり、ここも回避したいです。2点お願いします。 =INDEX($F$3:$J$7,MATCH(A2,$E$3:$E$7,0),MATCH(B2,$F$2:$J$2,0))

  • INDEX関数とふりがな表示

    INDEX関数とふりがな表示 Office2007を利用してます。Excelで一枚目のシートに名簿があります。名簿の名前欄にはふりがなが表示されています。(フォネティック関数ではなく、書式のふりがなの表示/非表示です。) 二枚目のシートにインデックス関数を用いて名簿の名前を引張ってきた場合、ふりがなが表示されません。 これは別のセルにフォネティック関数で表示させるようにするしか方法はないのでしょうか?

  • エクセルでの集計表

    エクセルを勉強している最中で集計表を作成しています。 試しに20人分・5教科の試験の得点の集計を出しています。 名前・5教科の平均点・個人の最高点・個人の最低点・各教科の得点という順番で表にしています。 個人の最高点・最低点はMAX・MIN関数で出す事ができました。 各教科ごとの上位5人の表を作る途中でつまずいてしまいました・・・ 得点・名前 という感じで表にしたいと思ってます。 得点はLARGE関数で上位5つを出す事ができたのですが、その得点に付随して得点者の名前も隣のセルに表示したいのです。 今は手打ちで打っているのですが何か良い方法があれば教えていただけませんか? よろしくお願いします。

  • エクセルでのインデックス関数について

    エクセルで任意の二列からセルの中身を引っ張ってきて組み合わせるものを作成しているのですが、うまくいきません。 以下のページを参考に作成しました http://okwave.jp/qa/q5883947.html 添付画像ではB、C列の2行目に結果が出るようにしてE,F列にランダムに取りたい値、G,H列に乱数を表示させています また、B2のセルには =INDEX($E$2:$F$100,MATCH(MIN(G$2:G$100),G$2:G$100,0),COLUMN(B1)) C2のセルには =INDEX($E$2:$F$100,MATCH(MIN(H$2:H$100),H$2:H$100,0),COLUMN(C1)) と入れてあります なぜエラーが出るのかが全くわからなく、困っています ご存知の方、どうかよろしくお願いいたします

  • 【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人しか表示されません。 該当が複数ある場合の出し方は他に方法があるのでしょうか? どなたか力を貸してください。 よろしくお願いします。

  • ExcelセルにVBAでINDEX関数を入力

    ExcelでINDEX関数とMATCH関数で"B11:E13"セルに以下の数式データがあります。 数式は "B11"=IF(ISERROR(INDEX($A$1:$A$9,MATCH(1,B$15:B$23,0))),"",INDEX($A$1:$A$9,MATCH(1,B$15:B$23,0))) "B12"=IF(ISERROR(INDEX($A$1:$A$9,MATCH(2,B$15:B$23,0))),"",INDEX($A$1:$A$9,MATCH(2,B$15:B$23,0))) "B13"=IF(ISERROR(INDEX($A$1:$A$9,MATCH(3,B$15:B$23,0))),"",INDEX($A$1:$A$9,MATCH(3,B$15:B$23,0))) "C11"==IF(ISERROR(INDEX($A$1:$A$9,MATCH(1,C$15:C$23,0))),"",INDEX($A$1:$A$9,MATCH(1,C$15:C$23,0))) "B15~B23"に数値1~3を入力した場合イニシャルA~I が入力される式ですが、列を連続で入力できるような処理をVBAのWorksheetFunctionで行うにはどのようにコードを記述すればよいのでしょうか。 ご回答のほどよろしくお願いします。

  • Excel INDEX関数ズレて抽出される

    INDEX関数で行列番号取得にMATCH関数を使用したときにズレてしまう。 定例のミーティングの参加表を作成しようとしています。 シートの構成は添付画像の通りです。 Sheet1 定例のミーティングの参加表 巡回Aは月ごとに担当者が変わる。 Sheet2 巡回Aの月別の担当表 巡回Aの担当表を用意して、COUNTIF関数で参加表の氏名が巡回Aのリストに含まれていない場合(カウント0)は空欄にし、0以外の場合、INDEX関数で列番号のところにMATCH関数をネスト、MONTH(TODAY())+1とし、ex. 8月なら翌月の9月に該当する列番号を抽出して巡回Aの出席を月が変わると連動するようにしたいです。 =IF(COUNTIF($B$22:$B$29,$B3)=1,IF(INDEX($C$22:$N$29,MATCH($B3,$B$22:$B$29,0),MATCH(MONTH(TODAY())+1,$C$20:$N$20,0))=0,"",INDEX($C$22:$N$29,MATCH($B3,$B$22:$B$29,0),MATCH(MONTH(TODAY())+1,$C$20:$N$20,0))),"") 職場のExcel2016では列がズレてしまい、抽出ができないです。 Excel365では問題なく抽出ができました。 2016でズレるのは何故でしょうか。 詳しい方居ましたらご教授下さい。 よろしくお願い致します。

専門家に質問してみよう