• ベストアンサー

エクセル 一連のデータを任意の範囲で順位付けしたい

エクセルで、一つの列に並べられたデータを、任意の範囲で順位付けがしたいです。 具体的に説明します。 下記の表のように、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

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.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にその答えを貼り付けただけです。

tanakataiti
質問者

お礼

おかげで問題が解決しました!! 大変ありがとうございました!!

その他の回答 (1)

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

=SUMPRODUCT(($A$1:$A$10=A1)*($B$1:$B$10>B1))+1 こんな感じでしょうか? 今はA1からB10までなので、適宜範囲を広げて下にコピーしてください。

tanakataiti
質問者

お礼

おかげで問題が解決しました!! 大変ありがとうございました!!

関連するQ&A