• ベストアンサー

エクセルでの順位の並び替えについて

現在以下のような表があります。 順  位  1  2  4  2 点数合計 15  10  8  10 内  訳  (省略) 名  前 A氏 B氏 C氏 D氏 (内訳を入れると合計点数及び順位がでる) これを 順位  名前 1位  A氏 2位  B氏 2位  D氏 4位  C氏 という表に並びなおしたいのですが どのようにしたらよろしいでしょうか 現在は 順位  名前 1位  A氏 2位  B氏 3位  #N/A 4位  C氏 となってしまっております。 当方いろいろ調べつつがんばって表作っておりますが ど素人のため意味もわからず作っております。 初めての質問ですのでいろいろとご迷惑をおかけするかもしれませんがなんとか教えていただけますようよろしくお願いいたします。

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

  • ベストアンサー
  • odessa7
  • ベストアンサー率52% (101/192)
回答No.2

 例えば以下の方法はいかがでしょうか?  順位行と点数合計行の間に作業セルを挿入します。 順位 ・・・ 作業 ★→ 点数 ・・・ ★ =COLUMN()*0.001+A1 ←この関数を入れて行の終わりまでコピー&ペースト  次に表示させる側にも作業セルを挿入します。表示させる部分は仮にA10セル~B14セルとします。    A  B 10 順位 名前 11 ☆1 ☆2 ・ ・ 14 ☆1 =OFFSET($A$1,0,MATCH(B10,A$4:D$4)-1) ☆2 =HLOOKUP(SMALL($A$2:$D$2,ROW()-9),$A$2:$D$4,3,FALSE) この関数をコピー&ペースト  範囲は適宜広げてください。  また不明な点はお尋ねください。  ご参考まで。

tomo3210
質問者

お礼

ありがとうございました。 データに重みをつけるということがあるんですね^^ 目からうろこでした^^ ありがとうございました。

その他の回答 (4)

  • haccyan
  • ベストアンサー率43% (27/62)
回答No.5

おはようございます。 まず質問内容から、 同率順位に対応した、横並びの形で順位が出ている。 これをタテ並びで、上から順位どおりに並べ替えたい。 という問題として考えてみます。 まず、表の行列の入れ替えを行います。 表全体をコピー→別シートの適当な場所を選択し、 →右クリックメニューの[形式を選択した貼り付け]から、 貼り付け方法を[値(V)]、演算は[しない(O)]とし、 [行列を入れ替える(E)]をチェックして[OK] これでタテ並びの表に変換されて貼り付けられたはずです。 (ただしこの場合、関数などの数式は破棄されて見た目そのままが残った状態となります) 次に、順位通りに並べ替えます。 並べ替えるデータのどこか一部を選択した状態で [データ]の[並べ替え]を選び、[最優先されるキー]に順位列を指定して、 [昇順]と、範囲の先頭行の[タイトル行]をチェックして[OK] 以上で目的の状態になります。

tomo3210
質問者

お礼

ありがとうございました。 今回は重みをつけるという方法でやってみました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

作業列を1列使いますが、(どこでも良いが下記例ではE列を使った) バッチ的作業でよいものとする(出来上がったデータだけを対象にする、列増加に即時反映しないでよい、作業をやり直しでよいとする)。 ーーー 例データ A1:E4 順位 1 2 4 2 点数合計 15 10 8 10 名前 A氏 B氏 C氏 D氏 ーーーー A1:E4を範囲指定して、編集-コピー どこでも良いが、たとえばA11をポイント 編集ー形式を選択して貼り付けー行列を入れ替える。 ーーーーー 結果 A11:D15 順位 点数合計 名前 1 15 A氏 2 10 B氏 4 8 C氏 2 10 D氏 ーーーー E12に =COUNTIF($A$11:A13,A12) をいれ、E15まで式を複写。 E12:E15は 1 1 1 2 となる。 ーーーーーー A12:E15を範囲指定して、並べ替えする。 ソートキーは第1キーはA列、第2キーはE列。 結果 A11:E15 順位 点数合計 名前 1 15 A氏 1 2 10 B氏 1 2 10 D氏 2 4 8 C氏 1

tomo3210
質問者

お礼

ありがとうございました。 今回は下記のデータに重方法を取り入れてみました。

  • onntao
  • ベストアンサー率32% (108/332)
回答No.3

点数合計に対する順位が自動表示されているなら、そこには当然関数が入っていると思いますが、それを 順位  名前 1位  A氏 2位  B氏 2位  D氏 4位  C氏 のように並び替えたということですが、同率2位の存在を無視してしまうと、ないはずの3位が関数によって検索されているであろう氏名は これまた当然、見つかりませんというエラーの#N/Aがでます 並び替え結果と希望される 順位  名前 1位  A氏 2位  B氏 2位  D氏 4位  C氏 の順位を、同率順位があっても対応できるよう、やはり関数にて取得した方がよく、その手法は”重み付け”と俗に呼ばれるものを勉強するとよいでしょう。 尚今回の場合は +ROW()/1000というより +COLUMN()/1000というパターンでしょうが、同じことですね

参考URL:
http://excite.okwave.jp/kotaeru.php3?q=1490728
tomo3210
質問者

お礼

ありがとうございました。 データに重みをつけるということがあるんですね^^ 目からうろこでした^^ ありがとうございました。

  • rupo
  • ベストアンサー率14% (7/50)
回答No.1

ゴミレス覚悟で書きます。 私の経験で言えばありうるのは計算式が ソートをかけたときにずれてしまった可能性です。 ソートをかけるときの範囲指定が間違っていると ありえます。 次に、 > 2位  B氏 > 3位  #N/A とのことですが、これは試しに故意に点数合計の D氏の数字を書き換えたりすると、 表示が直ったりしますか? 後は恐らく関数が組み込まれた表になってるのだと 思いますので、組み込まれた関数の計算式をいじることに なると思います。 詳しい方のコメントを待つことにしましょう。 いじる時はもともとのファイルは バックアップして残しておきましょう。

tomo3210
質問者

補足

早速の回答ありがとうございます。 #N/Aはもとのデータに3位がないためにおきているようです。 同点も同じ2位と表示で切ればいいのですが・・ ちなみに新しい表のほうは1位2位・・・手打ちになっています。 できればこれも関数にしたいのですが・・