• ベストアンサー

EXCELの表で上位3(TOP3)を表示

説明がわかりにくいかもしれませんが、 EXCEL2000で例えば10社分のデータのを毎日入力し、その合計の値の TOP3を関数で表示(抽出?)させることはできるのでしょうか? (毎日入力しているので、A~Jの合計値は変動します。 毎日のデータは別シートで入力) 合 計 A社:25 B社:19 C社:55  : I社:37 J社:80 ★TOP3★  A列 B列 (1)J社:80 (2)E社:78 (3)C社:55 セルのA列に社名、B列に数値を返すようにでしたいのですが…。 関数のRANKだと合計の横に順位が出るだけ?のようなので、 指定したセルの範囲に上位3社の社名と数値が表示されるように できる方法をご存知の方、よろしくお願いします。

  • mumu20
  • お礼率88% (143/161)

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

  • ベストアンサー
  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.2

多分、#1の方の式そのままではエラーになるような…。(カッコの数がおかしい。sheet名の指定も変だと) RANKを使った方法です。 各合計が、E・F列にあるとします。(E列が会社名、F列が数値) となりのG列を作業列とします。セルG1に =RANK(F1,F:F,0) として10行目までコピーし、とりあえず順位を表示させます。 この上でセルA1に =INDEX(E:E,MATCH(1,G:G,0)) また、B1に =INDEX(F:F,MATCH(1,G:G,0)) とすればOKです。 MATCHの直後の"1"が順位ですので、これを2と3に変えて セルA2~B3にコピーすればTOP3の完成です。 考え方自体は#1の方と同じですけど。

mumu20
質問者

お礼

回答ありがとうございました。 早速やってみたら、できました。 INDEX、その他関数はあまりよくわからないので、 書いていただいた通りにやってみたらできました。 ためしに数値を変えてみても、変動していたので感動です。 ありがとうございました。

その他の回答 (2)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 数値が同じ場合は、行の上のデータを優先します。 また、数値は整数限定とします。 元の表がSheet1のA1:B10にあるとします。 別シートのA1に、 =INDEX(Sheet1!$A:$A,1/MOD(LARGE(Sheet1!$B$1:$B$10+1/(ROW(Sheet1!$B$1:$B$10)+1),ROW(A1)),1)-1) と入力して、[Ctrl]+[Shift]+[Enter]で確定します。 (数式の両端に「{}」が付いて、配列数式になります。) B1に、 =INT(LARGE(Sheet1!$B$1:$B$10+1/(ROW(Sheet1!$B$1:$B$10)+1),ROW(A1))) と入力して、同様に[Ctrl]+[Shift]+[Enter]で確定します。 そうしたら、A1:B1を3行目までコピーします。

mumu20
質問者

お礼

回答ありがとうございました。 最初に#2の方の方法でやってみたらできました。 これからも何かありましたら、またよろしくお願いします。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

各合計がSheet1のA1:B10にあるとして C1に =B1+ROW(A1)/100 としてC10までコピーしてください。 これは同数値がある場合の対応です。 TOP3のA1:A3に1,2,3と入力 B1に =INDEX(SHEET1$A$1:$A$10,MATCH(LARGE(SHEET($C$1:$C$10,A1),$C$2:$C$6,0),1) C1に =INDEX(SHEET1$B$1:$B$10,MATCH(LARGE(SHEET($C$1:$C$10,A1),$C$2:$C$6,0),1) として3行目までコピー これでできます。 関数を使わないでピボットテーブルを使う方法があります。 こちらの場合はTOP3の件数が4件以上になる場合の表示も可能です。

mumu20
質問者

お礼

早速の回答ありがとうございました。 #2の方の方法でやってみたらできました。 これからも何かありましたら、またよろしくお願いします。

関連するQ&A

  • Excelの関数について

    Excelの関数について 今表を作っていて 1日数回データを取って それを1ヶ月ぐらい続ける予定で その結果をExcelの表に入力したいと思っています。 A列に現在値 B列に増加分 C列にA+Bの値を入れたいと思っています。 なので、C列には、C1には=SUM(A1,B1)として セルの右下にポインタを合わせて十字で下まで引っ張って関数をコピーしています。 で、そうするとC列に0が表示されてしまい それはなんとか、ツール→オプション→表示→ゼロ値のチェックを外して解決したのですが C列の合計値は次の行のAのセルに表示したくて 例えば C3の数値はそのままA4に C7の数値はそのままA8にといった感じで で、A2のセルに=C1とかA5のセルに=C4とかしたのですが いちいち関数を埋め込むのは面倒くさいので 下のほうまで関数をコピーしたところ 関数が埋め込まれているので A列とB列にしたの方まで同じ数字が表示されています。 これって消すことはできないのでしょうか? 現在は 最初のA1セルだけに数値を入れたのですが関数を埋め込んだことにより A列とB列すべてにA1セルの数値が表示されています。 まだデータを取っていないのでB列は空白です。 ただ、できれば、下の方に数値が表示されないようにしたいんです。 言葉で説明すると A列とB列に数値が入力されない限り、C列の合計値は表示されない設定にできれば 私の言っているような状況になると思うのですが、そういう事はできないのでしょうか… 教えてください。

  • エクセル関数について

    エクセル関数について質問です。 簡単に説明すると特定のセルに特定の数値を入力するとその行の別のセルの数値を別のセルに表示させたい。 たとえば     A      B       C 1  100            2  200      1      100 3  300      1      300 4  400 5  合計            400 上記の様になっていた場合 A列は定数で固定です。B列のセルに1と入力(1でなくてもよい)した行のA列の数値を Cに表示したいのですが、 C列にどの様な関数を使ったらいいんでしょうか?宜しくお願い致します。

  • Excelの関数について

    Excelの関数について 私のExcelは2003です。 表を作っていて A列とB列に数値を入れてその合計をC列に自動的に出すようにするのは C列に「=SUM(A3,B3)」と入れますよね? 1日数回のデータを取り A列とB列に数値を入力し 1ヶ月ほどデータを取り続けるので その分C列に入れた関数を下へセルの右下にポインタを合わせて十字の記号を出して 下へ関数を入れたのですが その場合C列には0と表示されますよね? これは防げないものなのですか? 後、そのC列に表示された合計値を 次の行のA列に表示させたいのですが そういう関数はありますか? C列の合計値に次の数を足して、合計値をどんどん増やしていくので 例えばC1の値をそのままA2に表示。 C2の値をそのままA3に表示 C5の値をそのままA6に表示としたいのですが 関数があったら教えてほしいです。

  • ■EXCELでこんな関数なんですが・・・教えて!!

    たとえばA列のセルに任意の数値が入力されています。B列のセルにある条件で日付が入力されます。そして別のセルにB列の日付が入力されるごとに隣接するA列の数値を合計していく関数なんですが。よろしくお願いします。

  • エクセル関数について

    エクセルの関数について質問です。 例えば、 C1セルには、数値データが入っています。 A2~A10セルに日付データ。 B2~B10セルに数値データが入っている表があります。 B11セルの値に、(C1データ)-(A列の最新日付セルと同行のB列データ)を表示させたい場合、 どのような関数を作成すればよいですか。 宜しくお願いします。

  • エクセル 表

    エクセルについて質問があります 表を作成しています 例えば A4に項目 B4にメーター値 C4には B3までの総合計とB4の合計の値が 入力 されるような表を作成したいです B列に数値がなければ Cは その際は 例えばB列が0なら C欄は空欄になるように設定したいです ちょっと分かりづらい説明になってしまいましたが どなたか この関数をお教え下さい よろしくお願い いたします

  • エクセル 検索

    Microsoft Excel 2007を使用しています。 条件を選んでマッチするデーターを表示する方法をお尋ねします。 A列、A1に「1」以下セルA10に「10」までの数字が昇順で入力されています。 セルB1からセルB10まで果物の名前が入力されています。名前の重複はありません。 セルC1に果物の名前を入力したらセルD1に関数を用いてそれに対応するA列の数値が表示されるようにできませんでしょうか。 エクセルのヘルプを見ましたが、旨く当てはまる関数を探し出せませんでした。 宜しくお願い致します。 例)  セルA5に「5」という数値があり、B5に「柿」が入力されている。 セルC1に「柿」と入力すると、セルD1に「5」が表示される。

  • エクセルの表作成にあたって

     お世話になります。  エクセルで下記のような表を作成したいのですが、ご教授お願いいたします。  A列には元々時間が入っており、B列にはその時間の数値が入ります。 A1が10時、B1の数値が10 A2が11時、B2の数値が12 A3が12時、B3の数値が40 A4が13時、B4の数値が23 A5が14時、B5の数値は未入力(空欄) A6が15時、B6の数値は未入力(空欄)  A列では元々時間が入っておりますが、実際にその時間が来た時にB列に数値を手入力して行きます。  任意のセルに上記の数値の最新データを表示したい。上記の場合はB4の数値23を任意のセルに表示したい。  時間が過ぎていくことにより、常に最新のB列の数値データを取得して任意のセルに表示するような方法を教えて下さい。 (つまりB列で空欄の一つ前のデータを自動的に取得したい。) 【補足】  最新数値データの下は常に空欄になっています。  説明不足な点があれば補足いたします。  これが出来れば非常に助かります。よろしくお願いいたします。

  • エクセル・単純に合計を出す・・

    表を作っています。 例えばセルを A1~A3,A4~A6,A7~A9 と結合させてそれぞれ数値を入力してます。 B列は結合無しでそれぞれ数値を入力しています。 A+Bの合計をC列に計算させます。 C1に関数を入力して、C2以降はコピーします。 単純に(A1+B1)にすると C1は正しく合計してくれるのですが コピーしたC2は(A2+B1)となってしまい Aが0として計算されてしまいます。 (A$1)と、してしまうと当然ですが C4以降の計算が狂います。 C4は結合されたA4~A6を見てほしいのです。 実際に作っている表は、もっと数が多いので 1つづつ計算では・・・ 何かよい方法はないでしょうか? よろしくお願いします。

  • Excel 関数について

    Excel 関数について データにちょっと数値を追記したいのですが、頭が混乱して何をやっているかわからなくなり、質問させて頂きます。 D1セルに以下セルの数値を入れたいのですが・・・ A1セルが0の時はB1セルの数値を。。でもA1セルに0以外の数値が入っている時はそれをD1セルに入れる。 B1セルも0の時はC1セルの数値を。。でもB1セルに0以外の数値が入っている時はそれをD1セルに入れる。 要するにA列B列C列にはそれぞれ数値が入っているのですが、A列とB列は0のところもあり。。。 列の優先順位としてはA列を最優先としてB列→C列の順に優先列の数値が0の時は最終的にはC列の数値が入るようにしたいです。 説明もわけがわからなくてすみません~どなたか教えて下さい(>_<)

専門家に質問してみよう