LARGE関数を使用した順位の同一判定方法について

このQ&Aのポイント
  • WINDOWS7 EXCELL2010環境でLARGE関数を使用して順位の同一判定方法を知りたい。
  • 順位(F列)が同じで、E3(2.000)とE4(2,000)が同じ金額の場合に、会社名(B)が同じになるような数式が知りたい。
  • 数式はF1~F5は数値、G1はLARGE関数を使用して順位を計算し、H2はINDEX関数を使用して金額が最大値の会社名を表示している。
回答を見る
  • ベストアンサー

LARGEで同じ値の時の順位

いつもお世話になります。 WINDOWS7 EXCELL2010です。 添付図で説明しますと、 順位(F列)が 3位と4位の E3(2.000) E4(2,000)が偶然に同一金額の時 会社名(B)も同一になる数式です。 この同一の金額の時、 H列で言うと 「A F B C D」もしくは「A F C B D」 とするには何かいい方法ってないでしょうか。 是非ともご指導を仰ぎたいです。 数式は次のようでご参考に F1~F5 はただの数値 G1 =LARGE($E$2:$E$11,F2) H2 =INDEX($A$2:$A11,MATCH(MAX($E$2:$E$11),$E$2:$E$11,0))

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! H2セルにMATCH関数をお使いですが、MATCH関数は最初にヒットした行(上側の行)しか返せません。 そこで一例です。 H2セルに =IF(G2="","",INDEX(A$1:A$100,SMALL(IF(E$1:E$100=G2,ROW(A$1:A$100)),COUNTIF(G$2:G2,G2)))) これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合はH2セルに貼り付け後、数式バー内で一度クリック! 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これをオートフィルで下へコピーではどうでしょうか? ※ 数式は100行目まで対応できるようにしています。m(_ _)m

dorasuke
質問者

お礼

いつもいつもご指導ありがとうござます。 思っていた通りにできました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

ごく簡単な計算だけで。 D2に =RANK(E2,E:E)+ROW()/1000 と記入、ホームタブでカンマ区切り書式を入れておき、以下コピー F2に =SMALL(D:D,ROW(F1)) と記入、同様にカンマ区切り書式を入れて以下コピー G2に =VLOOKUP(F2,D:E,2,FALSE) H2に =INDEX(A:A,MATCH(F2,D:D,0)) 以下コピーで完成。 D列を汚したくなければ、どこか邪魔にならないZ列とかシート2とかに追いやって全然かまいません。

dorasuke
質問者

お礼

いつもご指導賜り感謝感激です。 一つの課題に対して複数のやり方があるのが勉強になりベストアンサーの判定には迷います。 判断として先に回答していただいた方にしました。 お許しください。

関連するQ&A

  • (Excel)RANK関数で同じ値なのに違う順位になる

    Excel2000を使用しています。 下記の表を作成して、  F列には、=SUM(A1:E1)-MIN(A1:E1)-MAX(A1:E1)  G列には、=RANK(F1,$F$1:$F$4) を入力していますが、 F2とF3は同じ値になるのに順位が違って出てきます。 確か、RANK関数は同値の場合同じ順位が出てくると思うのですが、 そうならないので困っています。 ちなみに、F列に数式ではなく計算結果を直接入力した場合には 同じ順位が出てきました。 どうしてそのようなことになってしまうのでしょうか? ご存知の方がいましたら教えてください。 (A) (B) (C) (D) (E) (F) (G)  9.50  9.20  9.35  9.60  9.45 28.3000  1  9.40  9.30  9.35  9.55  9.45 28.2000  2  9.20  9.45  9.40  9.35  9.55 28.2000  3  9.45  9.30  9.30  9.40  9.50 28.1500  4 宜しくお願いします。

  • 数式が入ったセルで値がないときは詰めたい

    いつもお世話になります。 WINDOWS7 EXCELL2010です。 今回ご指導を戴きたいのは赤枠内です。 A Bは手入力します。 その結果、C D E Fの各列には下記の数式で表示されます。 例えば、 E5 E8 E9 の各列のように空白が出るので「見易く」 したいため詰めるのにどんな関数を入れればできますか。 添付画像で各列の説明です A 手入力 B 手入力 C =IF($B2="","",VLOOKUP($B2,一覧表!$A$2:$B$20,2,FALSE)) D =IF(COUNTIF($B$2:B2,B2)=1,ROW(B1),"") E =IF(K2="","",C2) F =IF(L2="","",COUNTIF($C$2:$C$19,"*"&C2&"*")) どうかよろしくお願いします。

  • EXCELで入力された式の値を求めて自動計算

    A B C D E 1|データNO |数値1| 数値2| 数値3| 2| 1| 0.3 | 0.2 | 0.5 | 3| 2| 0.3 | 0.2 | 0.5 | 4| 3| 0.3 | 0.2 | 0.5 | -------------------------------------------- 10| 2/1| 数式1| 数式2 | 数式3 | 11| 3/2| 数式4| 数式5 | 数式6 | 12| 【求めたい値】 数式1には=C3/C2、数式2には=D3/D2、数式3には=E3/E2 数式4には=C4/C3、数式2には=D4/D3、数式3には=E4/E3 B列の2/1というのをそのまま式にしたいです。 2/1、3/2などは規則性はありません。その都度変わります。 C列の式ではC列の値を、D列の式ではD列の値を用います。 関数で=MATCH(LEFT(D34,SEARCH("/",D34,1)-1),D1:D23,0))と入れ、C3の値を求めようと思いましたが この時点でエラーになりました。=MATCH(2,D1:D23,0)だと大丈夫なのですが・・・。 関数でやるととても式が長くなりそうなので、VBAの方が良いかとも思っています。 どのようにコード、もしくは式を書けば希望の値が得られるでしょうか? VBAの場合は2/1などの数値を入れた時点で自動計算できれば嬉しいです。 よろしくお願いします。

  • excel 2つの条件(続き)

    ​http://okwave.jp/qa5054165.html​ の続きですが、    A   B  C  D  E  F   G 1  あ   3  22    4  15  ? 2  い   4  15    4  10  ? 3  う   2  10 4  え   4  10 E1に=LARGE(B1:B4,1) E2に=LARGE(B1:B4,2) F1とF2に{=MOD(LARGE(B1:B4*(MAX(C1:C4)+1)+C1:C4,ROW(B1:B4)),MAX(C1:C4)+1)} をいれました、画像のようにG1とG2に対応したA列を表示させるにはどうすれば良いでしょうか? よろしくお願いします。 

  • excel 2つの条件(第三弾)

    http://okwave.jp/qa5057168.html の更に続きですが、    A   B   C  D  E   F  G 1  あ   3  22    4  15  ? 2  い   4  15    4  15  ? 3  う   2  10    4  10  ? 4  え   4  10 5  お   4  15 想定していなかった5行目を追加しました。 E1に=LARGE(B1:B5,1) E2に=LARGE(B1:B5,2) E3に=LARGE(B1:B5,3) F1とF2とF3に{=MOD(LARGE(B1:B5*(MAX(C1:C5)+1)+C1:C5,ROW(B1:B5)),MAX(C1:C5)+1)} G1に=INDEX($A$1:$A$5,SUMPRODUCT((B$1:B$5=E1)*(C$1:C$5=F1)*ROW(A$1:A$5)))を入れましたがB列とC列が同じ組み合わせがある場合ではエラーが出てしまいます。 G1に『い』、G2に『お』を表示させる事は可能でしょうか? 重ね重ね申し訳有りませんがわかる方おりましたらよろしくお願いします。

  • エクセル 順位表

    エクセル 順位表 いつもお世話になります。 売上実績表の中に、順位表を追加したいのですが、実績表から抽出すると、同一の実績の営業所は、すべて同じ営業所になってしまい困っています。 A    B    C   D    E   F 営コード 実績      順位  営コード  実績 2     200   1   5  500 3   400   2   3  400 4   300   3   4  300 5   500   4   4  300 6   300   5   4  300 7    300 順位3、4、5位は、それぞれ4,6,7の営業所コードを表示したいのですが、どうしたらいいでしょうか。 F列には、F2=LARGE(B:B,ROW(A1)) E列には、E2=INDEX(A:A,MATCH(F2,B:B,0)) 営業所数は100程あり、ピボットテーブルを使用せずに作成したいです。 色々条件がついてますが、よろしくお願い致します。

  • エクセルで同順位がある場合

    エクセル2003を使用しています。下記のようなデータで数値の大きいものから順に順位をつけています。ところが同じ数値があった場合、一番左の項目しか表示されません。左から順番に表示させるにはどうしたらよいでしょうか?よろしくお願いいたします。    A   B    C     D     E    F    G   H   1     みかんりんごばなな  2  あ社 15  15  10  みかん 15  みかん 15  3  い社  20   30   30   りんご 20  りんご 20 E2=index($b$1:$d$1,1,match(large($b$2:$d$2,1),b2:d2,0) F2=large($b2:$d2,1) 上のような式だと、1位が同数値だった場合、左端のみかんだけが表示されてしまいます。G2はりんご、G3にはばななが表示されるようにしたいのです。 わかる方、よろしくお願いします!

  • 別のスプレッドシートの列番号を取得したい

    ブックA「A1」に、ブックB「1:1」の範囲内で、文字列が入っている一番右(最後)のセルの列位置を取得したいと考えています。 ※下の例でいえば「I1=う=9」です。 同じブックの中であれば、以下の計算式で表示されました。 ------------------------ ■ブックB  |A|B|C|D|E|F|G|H|I|J| 1|あ| | |い| | | | |う| | 2|●| A2=MATCH(INDEX(1:1,MAX(IF(1:1<>"",COLUMN(1:1)))),1:1,0)=9 ------------------------- 最初に説明したように、これをブックをまたいだ場合にも同じように機能させたいのですが、エラーが出てしまい出来ません。 ------------------------- ■ブックB  |A|B|C|D|E|F|G|H|I|J| 1|あ| | |い| | | | |う| | ■ブックA  |A|B|C|D|E|F|G|H|I|J| 1|●| | | | | | | | | | ※●に以下数式 -------------------- A1=MATCH(INDEX(IMPORTRANGE("URL","1:1"),MAX(IF(IMPORTRANGE("URL","1:1")<>"",COLUMN(*****)))),IMPORTRANGE("URL","1:1"),0) -------------------- *****の中身 -------------------- COLUMN(IMPORTRANGE("URL","1:1")) エラー → 引数は範囲である必要があります。 COLUMN(INDIRECT(IMPORTRANGE("URL","1:1"))) エラー → 関数 INDIRECT のパラメータ 1 の値が「あ」です。これは無効なセル/範囲の参照です。 -------------------- どのような数式にすれば、同じブック内と同様の挙動をさせられるでしょうか? 2日間悩みましたが分からないので、何卒お力を犯し頂きたく存じます。 よろしくお願いいたします! ※Excelではなく、スプレッドシートについてです。 ※別々のスプレッドシートを表したいのですが、適当な表現が見当たりません。ここでは便宜上、Excelと同じようにブックと呼ばせていただきました。

  • 同行複数セルの値から条件で特定の値を抽出したい

    次のようなことをするにはどうすればよいですか やりたいこと:複数の判定から、総合判定を出したい。  1  A    B  C   D    E    F  2     血圧 体重 血液検査  運動  総合判定  3 佐藤   B  C   A     D   【ココ】   4 鈴木   A  A   A     B   【ココ】 B~E列のセルには、A・B・C・Dのどれかが入力されている。 B~E列のうち、Dが1つでもあれば、F列に「D」 B~E列のうち、Dがなく、Cが1つでもあればF列に「C」 B~E列のうち、D・Cがなく、Bが1つでもあればF列に B~D列のうち、D・C・Bがなく、AのみであればF列に「A」 となるように、F列に表示するには、F列【ココ】にはどんな式を入れればよいですか。 ちなみに、F3には「D」が、F4には「B」が表示されるようにしたいのです。 よろしくお願いいたします。 ※別の方法でもっと簡単にできる方法がありましたら、重ねて教えて下さい。

  • 自身のセル番地の列の値を使って自動計算する

    以前こちらで質問させていただきました。 http://okwave.jp/qa/q7097307.html 回答をいただき、希望の値を得られるようになりました。 そこから数式を汎用性のあるものにしようと現在は以下のような式になっています。 E48に入っている数式 =IF(INDIRECT("$D"&ROW())="","",INDEX(INDIRECT("E$1:E$"&$B$27),MATCH(LEFT(INDIRECT("$D"&ROW()),FIND("/",INDIRECT("$D"&ROW()))-1)*1,INDIRECT("D$1:D$"&$B$27),0))/INDEX(INDIRECT("E$1:E$"&$B$27),MATCH(MID(INDIRECT("$D"&ROW()),FIND("/",INDIRECT("$D"&ROW()))+1,10)*1,INDIRECT("D$1:D$"&$B$27),0))) データの終わりのセル番地をB27に記載 この式ですと他の列にコピーして使用できません。 そこでINDIRECT("E$1:E$"&$B$27)この部分のE$1という列を指定している部分を 数式が入っている自身の列としたいと考えました。 自身の列をアルファベットで表す数式を入れることも考えましたが、かなり長くなってしまいます。 =INDIRECT("R"&COLUMN()&"C2",0)のようにR1C1形式で式を書いてみましたが、範囲指定のところで躓きました。 どのように式を書けば、スマートになるのかお教え願いたいです。 よろしくお願いします。

専門家に質問してみよう