• 締切済み

グループに順位をつけ、降順に並べ替えたい

セルA1からE5までを1つのグループとして、D1に当該月の売り上げ総額があります。これが40グループあって(2グループ目はA6からE10、D6に売上総額という形)、これをグループ内の項目・数字を固定したまま売上総額の順位による並べ替えをしたいのです。何かいい方法はあるでしょうか?

みんなの回答

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

データ例ぐらい挙げて、質問内容を説明すべきだ。 また関数、VBA、その他どこまでなら質問者は理解できるのか、注記しておくべきだ。 関数しか念頭にないのだろうな、と想像して、VBAは避けて下記をやってみた。 基本は「ソート法」なのだが、説明が長くなるが、判ってもらえるかな。 また質問者のニーズが、「はっきり」とは伝わらない。 ーー データ例 A1:D11 営業マン氏名 営業所 売上 コード 山田 横浜 34 11 水野 水戸 57 21 上島 調布 62 31 大川 横浜 41 11 鶴野 調布 69 31 神田 水戸 38 21 鳥島 横浜 46 11 遠野 水戸 31 21 上尾 調布 24 31 黒川 横浜 51 11 コードは下記で説明する。VLOOKUP関数で出したもの。 営業所の列(B列)を指定しておいて データーフィルタの詳細設定ー指定した範囲ーF1:F9-重複するレコードは無視する。 で、F1:H4に 営業所 横浜 水戸 調布 とでる.営業所名の重複しないリストができた。 ーー 営業所売上合計をSUMIF関数で出す。 G2に式 =SUMIF($B$2:$B$11,F2,$C$2:$C$11) を入れて、営業所数だけ縦方向に複写する。 横浜 172 水戸 126 調布 155 H1:H4に コード 11 21 31 を入れる(手入力。人間が決める、会社で決まっているとか)。 G2に式 =SUMIF($B$2:$B$11,F2,$C$2:$C$11)を入れて下方向に営業所数だけ複写する。 F1;H4は下記となる。営業所売上合計と営業所コードを入力したものができる。 営業所 売上合計 コード 横浜 172 11 水戸 126 21 調布 155 31 ーー D2に式 =VLOOKUP(B2,$F$2:$H$4,3,0)を入れて営業マンの最下行まで式を複写(各営業マンの行に営業所コードを付加した) ーー F2:H4をコピーして B12:C14に貼り付け 、D12:D14には営業所(合計行のための)のコードを 10 20 30 と貼り付ける。たとえば10台のコードの最小のコード10を割り当て、ソートして一番上に出るようにしている。一番下を望むなら19、29、39とかにする。 ーー これを、手操作でソートする。 第一キーは「コード」 第二キーは「売上」でソート ーー 結果 営業マン氏名 営業所 売上 コード 横浜 172 10 黒川 横浜 51 11 鳥島 横浜 46 11 大川 横浜 41 11 山田 横浜 34 11 水戸 126 20 水野 水戸 57 21 神田 水戸 38 21 遠野 水戸 31 21 調布 155 30 鶴野 調布 69 31 上島 調布 62 31 上尾 調布 24 31

noname#243026
質問者

お礼

非常に曖昧な質問で失礼いたしました。また丁寧なご指導ありがとうございました。

  • vitaminaa
  • ベストアンサー率13% (2/15)
回答No.4

簡単です F1列にダミーのデータとして、 F1にD1の値を入れます。(数値のコピーでも数式でも可) F2にD1の値を入れます。 F5まで同じことを繰り返します。 F6にD6をいれます。 F7にD6をいれます。 以下繰り返し 以下各グループで同じことの繰り返し 最後にF列の値で並べ替えです

noname#243026
質問者

お礼

ありがとうございます!

  • msMike
  • ベストアンサー率20% (364/1805)
回答No.3

[No.1補足]へのコメント、 誤解の無いやうに説明しておきます。 「手元に各社のデータ」を示せとは申しておりません。 貴方の言葉だけでは傳はりさうもないので、デッチアゲ・データから成るサンプル表でも示されたら如何と提案した丈です。 「うまく説明できません」ですと? 其れでは上手く囘答出來る筈も無からうと思ふのは私だけかも。 他者の囘答を御待ちあれ。さやうなら。

noname#243026
質問者

お礼

バカとはつらいものです。ありがとうございました。

  • kkkkkm
  • ベストアンサー率66% (1735/2605)
回答No.2

セットするのがかなり手間がかかりそうですが GからK列に並び替えた結果を出すとします。 L1に1 L6に = MAX(L$1:OFFSET(L2,-1,0))+1 以下総額の入った行のL列に上記をコピーします。5行飛ばしで連番ができると思います。 J1に(参考に6グループ分だけ示します) =LARGE(($D$1,$D$6,$D$11,$D$16,$D$21,$D$26),L1) または 、総額のセルを全て選択して名前を付けて(たとえば「総額」) =LARGE(総額,L1) でも それを、以下総額の入った行のJ列にコピーします。総額だけが5行飛ばしで降順に並びます。 G1に(たぶん200行までだと思いますが最終行を指定してください) =INDEX(A$1:A$200,MATCH($J$1,$D$1:$D$200,0)+ROW(A1)-1,1) として 横方向K列までと5行目までコピーしてください。すでに表示されている総額のセルは除く。 G6に =INDEX(A$1:A$200,MATCH($J$6,$D$1:$D$200,0)+ROW(A1)-1,1) として上記と同じようにK列までと行は該当グループ最後の部分までコピーしてください。 5行飛ばしで(各グループの最初の行のG列) 式をコピーして式の「$J$6」の行指定の部分を各グループの最初の行番号に変更してからグループ範囲にコピーして下さい。 上記をグループ分行ってください。 マクロが利用可能でしたらマクロでの対応も可能です。

noname#243026
質問者

お礼

ありがとうございます!

  • msMike
  • ベストアンサー率20% (364/1805)
回答No.1

「グループ内の項目・数字を固定したまま売上総額の順位による並べ替えを」する前と、した後との關係が理解出來ません。其の前後をサンプル表で示して下さい。

noname#243026
質問者

補足

msMike様 手元に各社のデータがないのでうまく説明できませんが、各グループの総売り上げだけを抜き出して順位による並べ替えをするのではなく、売り上げの多いグループごと(5行まとめて)に並べ替えたいのです。説明が下手くそで申し訳ありません。

関連するQ&A