- ベストアンサー
エクセル2003 RANK関数
A列に0を含め、正の数、負の数(セルの書式設定で「-」を付けた)が混在したデータがあり B列にLANK関数を使って昇順で順位を付けたいのですが、マイナス表示のデータがあるため うまくいきません。この問題を解決する方法があれば教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
LANK関数という関数は存じませんが、もしかすると、RANK関数の間違いではないでしょうか。 Excel2003では、どうなっているのかは分かりませんが、少なくともExcel2002では、マイナスの数値が含まれていても、RANK関数を使用して、普通に順位を付ける事が出来ます。 昇順で(即ち値が小さいものから)順位を付ける場合には、B1セルに次の数式を入力してから、B1セルをコピーして、B2以下に貼り付けると良いと思います。 =RANK($A1,$A:$A,1) 尚、A列にが空欄のセルが含まれている場合には、次の様な数式に修正して下さい。 =IF(ISNUMBER($A1),RANK($A1,$A:$A,1),"") 又、昇順で順位を付けるのではなく、0に近い順に順位を付ける場合には、次の様な数式となります。 A列の数値データーがA2~A99の範囲に存在する場合のA2の数式 =IF(ISNUMBER($A2),SUMPRODUCT((ABS($A$2:$A$99)<ABS($A2))*1)+1,"") A列の数値データーがA2から始まるが、最後のデーターが存在する行が不明の場合の数式 =IF(ISNUMBER($A2),SUMPRODUCT((ABS($A$2:INDEX($A:$A,MATCH(99^9,$A:$A)))<ABS($A2))*1)+1,"")
その他の回答 (5)
- KURUMITO
- ベストアンサー率42% (1835/4283)
A1セルから下方にデータがあるとしてA列を選択して昇順で並べ替えをします。 その上でB1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(OR(A1<0,A1=""),"",IF(AND(A1>0,ROW(A1)=1),1,MAX(D$1:OFFSET(D1,-1,0))+1)) または =IF(OR(A1<0,A1=""),"",RANK(A1,A:A,1)-RANK(INDEX(A:A,MATCH(0,A:A,1)),A:A,-1))
お礼
なるほど。こんなやり方もあるのですね。 今後の参考にさせていただきます。 ありがとうございました。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
A列のデータをコピー メモ帳に貼り付け メモ帳のデータをコピー ExcelのA列に貼り付け 順位を付ける関数は =RANK(数値,範囲,順序) 最小値が1なら =RANK(A1,$A$1:$A$100,1)
お礼
参考にさせていただきます。ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
どういう順にランクを振りたいのか質問にかけてないので質問にならない。 絶対値にでも基づいて振りたいのか(余り意味のある場面を想像しにくいが)。 自分の質問をよく読んで公にすること。自分でそのことで頭はいっぱいでも、重要なことで文章に表現できてないことが多々あるよ。
お礼
ご指摘のように説明不足でした。大変失礼いたしました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
A列例えば100,50、0、-50、-100のデータがあるときに昇順でしたら-100の行が1、-50の行が2になりますが、そうはならないということでしょうか?
お礼
A列に空白があることが問題だったようです。説明不足で申し訳ありませんでした。
- kmetu
- ベストアンサー率41% (562/1346)
どのような書式設定でマイナスをつけているのか不明ですが 実際のデータそのもにマイナスをつけるしかないと思われます。
お礼
ありがとうございました。
お礼
タイトルにはRANKとしているのに、本文ではLANKとなっていました。 ご推察していただいたように空白のセルが問題だったようです。 ご丁寧な回答をありがとうございました。