プロが教える店舗&オフィスのセキュリティ対策術

値A1~C10をF1~H7の様に
値段順(TOP3だけ)に並び替えしたいです!

ただし、
F行は固定
魚介と肉はまとめて値段順(TOP3だけ)
野菜は野菜だけで値段順(TOP3だけ)

「関数でランキング順に並び替えした値を表示」の質問画像

A 回答 (3件)

No.1です。



>出来れば、A列分類「魚介」「肉」「野菜」以外に10以上あった場合とかできますか?

ん~~~出来るとは思いますが、一気にすべての分類を表示するとなると
結構厄介だと思います。
そこで一案ですが、↓の画像のように表示したい「分類」を入力すると
そのデータを表示させる方法はどうでしょうか?

↓の画像でSheet2のB1セルに「分類名」を入力するとします。
(データの入力規則から「リスト」表示させるのが簡単かもしれません)

今回も元データのSheetに作行用の列を設けます。
Sheet1のD2セルに
=IFERROR(IF(ISNUMBER(FIND(A2,Sheet2!B$1)),RANK(C2,C:C),""),"")
という数式を入れ、しっかり下へコピーしておきます。
そしてSheet2のA4セルに
=IFERROR(INDEX(Sheet1!A:A,MATCH(SMALL(Sheet1!$D:$D,ROW(A1)),Sheet1!$D:$D,0)),"")
という数式を入れフィルハンドルで右へ・下へコピーすると
画像のような感じになります。

※ 今回は配列数式ではありません。
※ Sheet2のB1セルには必ずSheet1のA列のデータを入れます。
(魚or野菜といった表記では何も表示されません)

とりあえずはこの程度で・・・m(_ _)m
「関数でランキング順に並び替えした値を表示」の回答画像3
    • good
    • 0

同じ値段があった場合のルールは?


1位が2個あった場合とか3位が2個あった場合、
極論全部同じ場合だったら?
    • good
    • 0

こんばんは!



元データのA列分類には「魚介」「肉」「野菜」の三種限定とします。
一例です。
↓の画像のようにSheet1のデータをSheet2に表示するようにしてみました。

まず元データ(Sheet1)に作業用の列を設けています。
作業列D2セルに
=IF(A2="","",IF(A2="野菜",1000+COUNTIF(C:C,">"&C2)+COUNTIF(C$2:C2,C2),COUNTIF(C:C,">"&C2)+COUNTIF(C$2:C2,C2)))
という数式を入れこれ以上データはない!というくらいまで下へコピーしておきます。

そしてSheet2のB2セルに
=IF(COUNTIF(Sheet1!$D:$D,"<1000")<ROW(A1),"",INDEX(Sheet1!A$1:A$1000,MATCH(SMALL(IF((Sheet1!$D$1:$D$1000<1000)*(Sheet1!$D$1:$D$1000>0),Sheet1!$D$1:$D$1000),ROW(A1)),Sheet1!$D$1:$D$1000,0)))
配列数式になりますのでCtrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → B2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。
B2セルのフィルハンドルでD2セルまで → そのまま下へ3行フィル&コピー!

「野菜」の方も同様に・・・
B6セルに
=IF(COUNTIF(Sheet1!$D:$D,">1000")<ROW(A1),"",INDEX(Sheet1!A$1:A$1000,MATCH(SMALL(IF(Sheet1!$D$1:$D$1000>1000,Sheet1!$D$1:$D$1000),ROW(A1)),Sheet1!$D$1:$D$1000,0)))
これも配列数式です。
B6セルのフィルハンドルでD6セルまで → そのまま下へ3行ほどフィル&コピー!
これで画像のような感じになります。m(_ _)m
「関数でランキング順に並び替えした値を表示」の回答画像1
    • good
    • 0
この回答へのお礼

早速ありがとうございます!
やりたい事は大体できましたが、
出来れば、A列分類「魚介」「肉」「野菜」以外に10以上あった場合とかできますか?

お礼日時:2016/03/30 17:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!