アプリ版:「スタンプのみでお礼する」機能のリリースについて

EXCELで複数のグループ内で順位を表示させるようにしたいのですが、
間に欠損値「-」があります。

SUMPRODUCT関数を用いて、グループ内順位を振る方法はわかったのですが
欠損値を除く方法が分かりません。
欠損値の場合は順位ではなく「-」を入力したいです。

A列 B列 C列 D列 E列
グループ1 グループ2 スコア グループ1での順位 グループ2での順位
関東 東京 40 1 1
関東 東京 30 3 2
関東 東京 20 5 3
関東 埼玉 35 2 1
関東 埼玉 25 4 2
関東 埼玉 - - -
・  ・
・  ・


いまは一度並べ替えをして、順位を降っています。
ですが、順位を振るのはひとつではないため、何度も並べ替えが必要に
なっています。

関数で並び替えをせずに順位を振ることはできませんでしょうか。
マクロ対応でなければ無理でしょうか。
(Excelのバージョンは2003です)

よろしくお願いします。

A 回答 (3件)

スコアの-を0で置き換えしては。

    • good
    • 0
この回答へのお礼

早速のご回答、ありがとうございました。
スコアが0のものもあるため、0への置換えはできないのですが、-1などに
置き換えることは可能ですね。

やはり発想が足りないと痛感しています。
ありがとうございました。

お礼日時:2012/10/11 17:08

【作成例】


D2:
=IF(C2="","",IF(C2="-","-",SUMPRODUCT(($A$2:$A$20=A2)*($C$2:$C$20<>"-")*($C$2:$C$20>C2))+1))

E2:バリエーション
=IF(C2="","",IF(C2="-","-",SUMPRODUCT(($B$2:$B$20=B2)*ISNUMBER($C$2:$C$20)*($C$2:$C$20>C2))+1))


あなたのSUMPRODUCTの式の,単なるバリエーションじゃないかな?と思いますが。
ご自分では一体どんな式を書いたのか,ご相談で最初から情報提供してみるともっと話が早かったようには思います。
    • good
    • 0
この回答へのお礼

こちらの式を提示せず、すみませんでした。
SUMPRODUCTを使いこなせていなかったのが原因ですね。

IF文も挑戦してみたのですが、「($C$2:$C$20<>"-")」を間に入れるという
発想がありませんでした。

こちらの関数ですっきり解決です。
ありがとうございました。

お礼日時:2012/10/11 17:10

並び替えがA列とB列で行われている限りにおいては次のようにすればよいでしょう。


1行目は項目名としてD2セルには次の式を入力してE2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。
配列数式などではありませんのでデータ数が多くなっても計算速度が遅くなるなどのことは起こりません。勿論C列にデータが無いあるいは-の記号が有っても対応できます。

=IF(COUNT($C2)=0,"",RANK($C2,INDEX($C:$C,MATCH(A2,A:A,0)):INDEX($C:$C,MATCH(A2,A:A,0)+COUNTIF(A:A,A2)-1)))
    • good
    • 0
この回答へのお礼

SUMPRODUCT関数を使用しなくても、グループ毎の順位をつけることができるのですね。
計算速度も遅くなく対応できました。

No2さんの方が先に回答していただいたためベストアンサーとしましたが、
こちらも私的にはベストアンサーです。

ありがとうございました。

お礼日時:2012/10/11 17:18

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