- 締切済み
Excelのランキング機能
Excel初心者です。添付画像のように、各列のBest10の値と対応する項目を抽出することを関数を用いて行いたいのですが、可能でしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
imogasi方式でやってみる。 作業列C列を使うが、配列数式にならずに済む。式も理解しやすいでしょう。 例データ A列 B列「 C列 a 12 9 b 32 6 c 43 4 d 54 1 e 23 7 f 14 8 g 52 2 h 36 5 i 51 3 C2に式は =RANK(B2,$B$2:$B$11) 下方向に式を複写。 何処でも良いがF2に =INDEX($A$2:$B$100,MATCH(ROW()-1,$C$2:$C$100,0),COLUMN()-5) G2はF2の式を複写 F2:G2を上位5位までなら5行分式を複写する。 COLUMN()-5のところはF列=6で6-5で1になるようにしているもの。 ーー 沢山の例でimogasi方式を使っている。良ければGoogleでimogasi方式で照会してください。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! こちらで勝手に↓のように表を作ってみました。 同順位があるかもしれませんので、それにも対応できるようにしています。 C列を作業列として単純にランク(降順)を表示しておきます。 C2セルに =RANK(B2,B:B) としてオートフィルでずぃ~~~!っと下へコピー! E2セルの表示形式はユーザー定義から 0位 としておき =IF(COUNTIF(C:C,"<=10")<ROW(A1),"",SMALL(C:C,ROW(A1))) という数式を入れます。 F2セルに =IF($E2="","",INDEX(A$1:A$100,SMALL(IF($C$1:$C$100=$E2,ROW($A$1:$A$100)),COUNTIF($E$2:$E2,$E2)))) これは配列数式になってしまいますので、この画面からF2セルにコピー&ペーストする場合は、F2セルに貼り付け後、数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これを隣のG2セルまでオートフィルでコピーし、最後にE2~G2セルを範囲指定した後にG2セルのフィルハンドルで下へコピーすると画像のような感じになります。 参考になれば良いのですが・・・m(__)m
お礼
ありがとうございます。またお礼が遅れ申し訳ありません。じっくり検討させていただきます。
- web2525
- ベストアンサー率42% (1219/2850)
添付画像?が添付されていないようなので推測で TOP10の言うのが大きい順として =LARGE(値範囲,ROW()) (出力先が1行目からある場合、2行目以下から始まる場合は=LARGE(数値,ROW()-1)等ROW()から行数-1の数値を引いてください) この数式を下方向コピーで 次に項目の抽出は =INDEX(項目範囲,MATCH(C2,値範囲,0)) (C2の部分は最初の計算式が入っているセルです) これを下方向コピー 最初に値が入力されている範囲と項目が入力されている範囲に[値範囲]、[項目範囲]と名前付けして置くと良いかも 値の出力が必要なくTOP10項目だけ表示する場合は =INDEX(項目範囲,MATCH(LARGE(値範囲,ROW()),値範囲,0)) これだけでも あくまで推測ですが
お礼
ありがとうございます。またお礼が遅れ申し訳ありません。じっくり検討させていただきます。
- ttt1214
- ベストアンサー率20% (65/323)
関数は必要ないと思います。 メニューバーのデータ ↓ フィルタ ↓ オートフィルタ ↓ 抽出したい列の下向き▼のボタンをクリック ↓ トップ10をクリックすればトップ10は出て来ます。 さらに、項目の列の下向き▼のボタンをクリックして、調べる項目をクリックすれば 調べる項目のトップ10を調べる事ができます。
補足
表のデータが更新されていったときに、各項目のトップテンは変るので、それ毎にフィルタをかけてコピペする作業の手間を省きたいです。 おおもとの表のデータを講師 ↓ 各項目ごとに別途作成されたトップテン別表が自動的に更新される というしくみにしたいですが、可能でしょうか。
お礼
ありがとうございます。またお礼が遅れ申し訳ありません。じっくり検討させていただきます。