- ベストアンサー
【Excel】エクセルで列ごとに昇順に一気に並び替
【Excel】エクセルで列ごとに昇順に一気に並び替えたいです。どうすればいいですか? 列が多すぎて、1列ずつに昇順ボタンを押して並び替えると日が暮れてしまいます。
- みんなの回答 (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 ' ' ///
その他の回答 (3)
- msMike
- ベストアンサー率20% (364/1804)
Excel 2002 なら一気に3列ずつ、 Excel 2013 なら一気に10列ずつ、 が可能だけど、「日が暮れてしま」うほど「多すぎ」る「列」数とは、具体的には幾つ? 256? 19384?
- qwe2010
- ベストアンサー率19% (2193/11074)
マクロを使用します。 ツール からマクロを選び 新しいマクロの記録 名前をつけてOK これ以降あなたが動かしたとおりのことを記録してくれます。 ボタンまで作り、 後はこのボタンを押せば全てやってくれます。 編集機能もありますので、余裕があれば挑戦してください。 私のエクセルは古いので、やり方が違う可能性があります。
- aokii
- ベストアンサー率23% (5210/22062)
お礼
みなさん回答ありがとうございます