|
cap さん、おはようございます。
>1つのブックに数多くのシートがあります。
>A列からI列まで3行目以降文字や数字や記号が入ってます。
>A列には、3行目以降日付が 2004年5月28日 の形式で1年数か月分並んでい
ます。
>現在、日付は最終行が古く、A3セルが新しい状態です。
>これを逆に、下は行くほど新しい日付になる様に並べ替えたいのです。
これを手動でやってみて記録するとだいたいこんな感じです。
Sub Macro2()
' Macro2 Macro
Range("A3:A300").Select
Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin
Selection.NumberFormatLocal = "m""月""d""日"""
End Sub
そこから、いらないSelectをはずして、シートでループし、範囲をそれぞれ設定するようにしたらこんな感じです。
Sub test()
Dim ws As Worksheet
Application.ScreenUpdating = False
'現在表示しているブックの全シートをループ
For Each ws In ActiveWorkbook.Worksheets
With ws
'A列の最下行
Rmax& = .Range("A65536").End(xlUp).Row
If Rmax& > 3 Then
'A列のデータの範囲
Set r1 = .Range(.Cells(3, 1), .Cells(Rmax&, 1))
'I列まで範囲を拡張してソート
r1.Resize(r1.Rows.Count, 9).Sort Key1:=.Cells(3, 1), _
Order1:=xlAscending, Header:=xlNo
'セル書式→数値の書式設定
r1.NumberFormatLocal = "m""月""d""日"""
End If
End With
Next
Application.ScreenUpdating = True
End Sub
|
|