• ベストアンサー

エクセルの列の並べ替え

エクセルシートに複数列のデータ(列ごとに個数は異なる)があり すべての列のデータ(B~CV列)を列ごとに降順で並べ替えたいのですが データ範囲を選択して降順に並べ替えると B列は降順になるのですが C列以降はB列を基準にして行で並べ替えられてしまいます B列、C列・・・・CV列をすべて列ごとに降順で並べ替えるにはどうしたらいいでしょう? よろしくおねがいします。

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

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

マクロの記録を取り、列ごとの繰り返しに持ち込めばよい。 Sub Macro5() c = Cells(1, Columns.Count).End(xlToLeft).Column MsgBox c For i = 1 To c Columns(i).Sort Key1:=Columns(i), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlStroke, DataOption1:=xlSortNormal Next i End Sub でどうですか。第1行目は見出しの場合です。

lskd
質問者

補足

データの表示で実行してみたところ何とかできそうです! ただ降順にしたかったので Order1:=xlAscending を Order1:=xlDescending に指定してやってみたらできました! 助かりました。ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

1列毎に並び替えを行うか、VBA(マクロ)になります。 対象シートタブで右クリック→コードの表示→以下のコードを貼り付け→F5キー押下 マクロが不要な場合、貼り付けたコードを削除してVBE画面を終了して下さい。 ■サンプルコード Sub SortTest() For i = 2 To Cells(1, Columns.Count).End(xlToLeft).Column ActiveSheet.Columns(i) _ .Sort Key1:=ActiveSheet.Columns(i), order1:=xlDescending Next End Sub

lskd
質問者

補足

その通りやってみると F5キーを押して 実行されるときと実行されない時があります・・・

すると、全ての回答が全文表示されます。
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

>データ範囲を選択して降順に並べ替えると >B列は降順になるのですが >C列以降はB列を基準にして行で並べ替えられてしまいます 表全体を選択してるのであれば、当然ですね。 そのための並び替え機能ですから。 列ごとにやりたいのであれば、B列だけ選択して並び替えをして、C列だけ選択して並び替えをして、、、というように、列ごとに並び替えをしてください。

lskd
質問者

補足

書き忘れていましたが B~CV列(100個くらい) が7シートあり 同じようなファイルが4つあるのでできるだけ操作を減らしたいんです マクロは勉強不足かもしれませんが・・・ よろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A