プロが教えるわが家の防犯対策術!

エクセルで順位をつけたいのですが、
A列に順位、B列に品番、C列に金額の
表があるのですが、順位を金額順で品番順(同番が複数あるときは、その中の1番高いものに後続して金額順)にしたいです。
例えば、下のようにしたいのですが
できるのでしょうか?
順位は、1から連番じゃなくても順番さえわかれば
不規則数でもかまいません。
わかりにくい説明で申し訳ないのですが
よろしくお願いします。

B列   C列   順位(A列)
1    10    6
1    20    5
1     5    7
2    30    3
2     1    4
3    50    2
4    80    1

質問者からの補足コメント

  • わざわざありがとうございます。
    おっしゃるように、金額→品番の順です。
    もし可能であれば、業者の項目も追加したいです。
    金額順で同品番は最高値に後続していき、
    かつ業者ごとにという感じです。
    なので、業者ごとの1列目は最高値になりますので
    各業者の1列目だけ見ても
    金額順となるようにしたいです。
    ほんと説明が下手で申し訳ありません。

    品番  業者  金額   順位
    1    A  100  5
    1    A  20   6
    2    B  400  1
    3    C  200  2
    3    C  50   3
    4    A  30   7
    5    C  60   4

    No.5の回答に寄せられた補足コメントです。 補足日時:2020/08/05 19:40

A 回答 (6件)

No5です。



>おっしゃるように、金額→品番の順です。
金額優先だと、最初のご質問のA列の順位は
 6、5、7、3、4、2、1
ではなくて、
 5、4、6、3、7、2、1
になるはずなんですけれど??

補足を見ると列が移動しているようですが、例示するたびにセル位置が変わるようだと何が何だか分からなくなりますね。(きちんと伝わらなくなる)
更には、
>業者の項目も追加したいです。
内容が数値ではないのでしょうから、これをどう評価するのかさっぱりわかりません。

>各業者の1列目だけ見ても
>金額順となるようにしたいです。
残念ながら、意味がまったく理解できませんでした。

ひとまず、元の質問で(正しいのかどうかよくわかりませんけれど)金額→品番の順に評価するのなら、No4の式の列を入れ替えれば良いだけのことです。
セル位置は元のまま、「A列に順位、B列に品番、C列に金額」の位置関係とするなら、A1セルに
=IF(B1="","",MATCH(C1*1000+B1+ROW(A1)/1000,INDEX(LARGE(INDEX(C$1:C$999*1000+B$1:B$999+ROW(A$1:A$999)/1000,),ROW(A$1:A$999)),),0))
のようになります。
    • good
    • 0
この回答へのお礼

わかりにくくて申し訳ありません。
前回と今回の関数式すごく役に立ちました。
たすかりました。
ありがとうございました。

お礼日時:2020/08/07 22:27

No4です。



勘違いしてしまったかも知れませんので、念のための補足と確認です。

No4の回答は、評価の優先順を、
 品番 → 金額 → (行番号)
の順に計算していますが、ご質問文を再度読んでみると、もしかすると
 金額 → 品番 → (行番号)
の順が正解だったのでしょうか?
この回答への補足あり
    • good
    • 0

こんにちは



A1セルに

=IF(B1="","",MATCH(B1*1E8+C1+ROW(A1)/1E3,INDEX(LARGE(INDEX(B$1:B$999*1E8+C$1:C$999+ROW(A$1:A$999)/1E3,),ROW(A$1:A$999)),),0))

の式を入れて、下方にフィルコピーではいかがでしょうか。
※ B列C列ともに同じ値の場合は、先に出てくるものほど順位は低く(=順位数が大きく)評価されます。
    • good
    • 0

一度しか使わないのであれば、C列で並べ替えをした後に上から順に連番を振れば良いと思います。


元の並びに戻したいのであれば、空いている列に先に連番を入れておき、順位を付けた後に先の連番でもう一度並べ替えをすれば良いでしょう。

余計な数式などを含まずに済みます。
    • good
    • 2

こんばんは!



一例です。
↓の画像のように作業用の列を設けるのが簡単だと思います。
作業列D2セルに
=IF(COUNTBLANK(B2:C2),"",RANK(B2,B:B)*10^4+COUNTIF(C:C,">"&C2)+COUNTIF(C$2:C2,C2))

という数式を入れフィルハンドルで下へずぃ~~~!っとコピーしておきます。
(上記数式は同品番に同金額があっても同順位をつけないための数式になります)

A2セルに
=IFERROR(RANK(D2,D:D,2),"")

という数式を入れフィルハンドルで下へコピーすると
画像のような感じになります。

※ 作業列が目障りであれば、遠く離れた列にするか
非表示にしてください。m(_ _)m
「エクセルで順位をつけたい」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考になります。

お礼日時:2020/08/07 22:29

https://faq.nec-lavie.jp/qasearch/1007/app/servl …

エクセルの質問をするときはver.も書いたほうがいいですよ。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング