- ベストアンサー
エクセル 一連のデータを任意の範囲で順位付けしたい
エクセルで、一つの列に並べられたデータを、任意の範囲で順位付けがしたいです。 具体的に説明します。 下記の表のように、A列に任意の文字、B列に数字があります。 A列 B列 AAA 15 AAA 19 BBB 3 BBB 8 BBB 9 BBB 4 BBB 1 DDD 20 DDD 21 DDD 19 この中で、A列の文字が同じものについて、B列の数字の順位をC列に表現したいです。理想の結果としては、下記の表になります。 ランク関数を使えばよいのは分かりますが、任意の範囲を指定する方法が分からなく、かつデータ量が膨大(10000行程度)であるため、悩んでいます。よろしくお願いします! A列 B列 C列 AAA 15 2 AAA 19 1 BBB 3 4 BBB 8 2 BBB 9 1 BBB 4 3 BBB 1 5 DDD 20 2 DDD 21 1 DDD 19 3
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
シート1に元のデータがあるとして作業列としてD1セルには次の式を入力して下方にオートフィルドラッグします。なお、A列では並び替えが行われておりお示しのように同じデータは連続した行に並んでいるとします。 =IF(A1="","",RANK(B1,INDIRECT("B"&MATCH(A1,A:A,0)&":B"&MATCH(A1,A:A,0)+COUNTIF(A:A,A1)-1))) シート2のA1セルには次の式を入力します。 =IF(Sheet1!A1="","",Sheet1!A1) B1セルには次の式を入力します。 =IF(A1="","",Sheet1!D1) A1セルとB1セルを選択してからそれらの式を下方にオートフィルドラッグします。 答えはすでにシート1に表示されていますが、単にシート2にその答えを貼り付けただけです。
その他の回答 (1)
- edomin7777
- ベストアンサー率40% (711/1750)
=SUMPRODUCT(($A$1:$A$10=A1)*($B$1:$B$10>B1))+1 こんな感じでしょうか? 今はA1からB10までなので、適宜範囲を広げて下にコピーしてください。
お礼
おかげで問題が解決しました!! 大変ありがとうございました!!
お礼
おかげで問題が解決しました!! 大変ありがとうございました!!