• ベストアンサー

【Excel】エクセルで列ごとに昇順に一気に並び替

【Excel】エクセルで列ごとに昇順に一気に並び替えたいです。どうすればいいですか? 列が多すぎて、1列ずつに昇順ボタンを押して並び替えると日が暮れてしまいます。

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

  • ベストアンサー
回答No.4

こんにちは。 各列それぞれ(他の列とは無関係に・独立して)並べ替える、 という意図で仰っているのだと思います。 そのような機能はExcelの一般機能にはありませんから、 VBA・マクロを使って、自分で機能拡張していくことになります。 確かに[マクロの記録]を活用すれば、 使えそうなパーツを目にすることはできますが、 それを[昇順]ボタンと同等のものに仕上げるのは、 決して簡単なことではありません。 ご希望に副うようにマクロを書きましたので、宜しければ活用してください。 マクロの設定の仕方について、どうしてもやり方が判らないようでしたら、 補足欄ででもお訊ねあれば、再レスします。 以下のマクロは、[昇順]ボタンの仕様と同等以上のものを目指して書いたものです。   「選択中のセル範囲」に対して、   その選択の仕方が不完全であっても、   連続したデータ領域を対象として、   各列毎にそれぞれ独立して、   昇順での並べ替えを行います。 タイトルの有無に係らず、 並べ替えたい列の、何処か一部でも(例えば1行めだけ)選択してあれば、 列内のデータ数が不揃いでも、空の列を含んで選択しても、 有意なデータ範囲を捉え直して、並べ替えます。 ' ' /// Module1 Sub 並べ替え_各列並行_昇順() ' 8986170w Dim a As Range, col As Range Dim sELog As String   If TypeName(Selection) <> "Range" Then Exit Sub   Application.ScreenUpdating = False   For Each a In Selection.Areas     For Each col In Intersect(a.CurrentRegion, a.EntireColumn).Columns       On Error GoTo ErrH_       col.Sort Key1:=col(1), Order1:=xlAscending, _         Header:=xlGuess, Orientation:=xlSortColumns       On Error GoTo 0     Next   Next   Application.ScreenUpdating = True   If sELog <> "" Then MsgBox sELog   Exit Sub ErrH_:   sELog = sELog & vbLf & col.Address(0, 0) & vbTab & "errNum:" & Err   Debug.Print col.Address(0, 0), Err, Err.Description   Resume Next End Sub ' ' ///

sonicmaster
質問者

お礼

みなさん回答ありがとうございます

その他の回答 (3)

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

Excel 2002 なら一気に3列ずつ、 Excel 2013 なら一気に10列ずつ、 が可能だけど、「日が暮れてしま」うほど「多すぎ」る「列」数とは、具体的には幾つ? 256? 19384?

  • qwe2010
  • ベストアンサー率19% (2193/11074)
回答No.2

マクロを使用します。 ツール からマクロを選び 新しいマクロの記録 名前をつけてOK これ以降あなたが動かしたとおりのことを記録してくれます。 ボタンまで作り、 後はこのボタンを押せば全てやってくれます。 編集機能もありますので、余裕があれば挑戦してください。 私のエクセルは古いので、やり方が違う可能性があります。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

関連するQ&A