エクセルの並び替えをマクロにて行う方法 Sub Macro1() ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear

Excel | Visual Basic64閲覧

ベストアンサー

0

マクロの記録なので無駄があるようです。 これでどうでしょうか。 Sub Macro1() With Worksheets("Sheet1").Sort .SortFields.Clear .SortFields.Add Key:=Range("AM2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SetRange Range("A:AS") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub

ThanksImg質問者からのお礼コメント

う~ん、結構省ける事が出来るのですね… こんな簡潔になるとは ありがとうございます。 今後にも役立てます。

お礼日時:9/27 18:24

その他の回答(3件)

0

A 列降順です Sub 降順本番() Dim temp As Long temp = Range("A" & Rows.Count).End(xlUp).Row Dim a, b, c As Long For c = 1 To temp For a = 2 To temp If Cells(a, 1) > Cells(a - 1, 1) Then b = Cells(a - 1, 1) Cells(a - 1, 1) = Cells(a, 1) Cells(a, 1) = b End If Next Next End Sub

0

見出し付きの45列の表ならCurrentRegionで十分でしょ。範囲の自動取得です。 実はその最新型のSortはあまり効果がなくて、評判がいいとは言えない気がします。古いタイプの並べ替えのほうが頻繁に使われているのが現状ではないでしょうか? 役に立ちそうなのはSortFields.Clearぐらい、これもほとんどはクリアしなくてもヘッダーさえきちんと指定しておけばなくてもいいような気がします。ただ、横の並べ替えの直後だと必要かもしれません。念のためクリアしてから旧態依然の並べ替えのコードです。お試しください。 Sub Macro2() With Sheets("Sheet1") .Sort.SortFields.Clear .Range("A1").CurrentRegion.Sort _ Key1:=Range("AM2"), _ Order1:=xlAscending, _ Header:=xlYes End With End Sub