2009年07月29日
エクセルマクロ(VBA):帳票編集②(ソート処理)
今日は息子の誕生日。
少年野球をやっていて前からスパイク
が欲しいと言っていたのでプレゼントとして
買ってあげました。
早速履いて走り回っている姿に
自分も子供の頃に野球道具を揃えてもらって
感激した事をふと思い出しました。
息子よ!夢を追って汗を流せ。
それでは,昨日の続きです。
今日は、ソートの処理を考えてみます。
第1キーが得意先コード
第2キーが売上年月日
第3キーが商品コードの順で並び替えます。
そこでソートの命令文を調べて記述していたのでは時間がかかります。
こんな時、便利な機能がマクロの記録機能。
下の手順に沿ってやってみてください。簡単です。
<マクロの記録を始めます>
<ソート(並び替え)をします。:
ソートの処理がマクロとして記録されます>
<マクロの記録を終了します>
<記録されたマクロを確認します>
ソートのマクロが出来上がりました。
<作成されたマクロです。>
Sub Macro3()
'
' Macro3 Macro
Range("A1:I100").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2") _
, Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:= _
xlSortNormal, DataOption3:=xlSortNormal
Range("C2").Select
End Sub
そのままではデータが増えた時に正確に動かない事があるので、
修正を加えます。
範囲指定の Range("A1:I100").Selectの部分。
データの最後尾を取得するようにしましょう。
最後尾の取得については、以前の記事で説明してますので、
参考にしてください。
「g」を変数として使います。
g = Range("A65536").End(xlUp).Row
この命令で最後尾の行番号が取得できます。
こうする事によって、データが増えてもマクロを修正せずに
使える様になります。
Sub Macro3()
'
' Macro3 Macro
g = Range("A65536").End(xlUp).Row
Range("A1:I" & g).Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2") _
, Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:= _
xlSortNormal, DataOption3:=xlSortNormal
End Sub
これでソートのマクロは完成です。
またまた長くなりましたので続きは明日にします。
少年野球をやっていて前からスパイク
が欲しいと言っていたのでプレゼントとして
買ってあげました。
早速履いて走り回っている姿に
自分も子供の頃に野球道具を揃えてもらって
感激した事をふと思い出しました。
息子よ!夢を追って汗を流せ。
それでは,昨日の続きです。
今日は、ソートの処理を考えてみます。
第1キーが得意先コード
第2キーが売上年月日
第3キーが商品コードの順で並び替えます。
そこでソートの命令文を調べて記述していたのでは時間がかかります。
こんな時、便利な機能がマクロの記録機能。
下の手順に沿ってやってみてください。簡単です。
<マクロの記録を始めます>
<ソート(並び替え)をします。:
ソートの処理がマクロとして記録されます>
<マクロの記録を終了します>
<記録されたマクロを確認します>
ソートのマクロが出来上がりました。
<作成されたマクロです。>
Sub Macro3()
'
' Macro3 Macro
Range("A1:I100").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2") _
, Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:= _
xlSortNormal, DataOption3:=xlSortNormal
Range("C2").Select
End Sub
そのままではデータが増えた時に正確に動かない事があるので、
修正を加えます。
範囲指定の Range("A1:I100").Selectの部分。
データの最後尾を取得するようにしましょう。
最後尾の取得については、以前の記事で説明してますので、
参考にしてください。
「g」を変数として使います。
g = Range("A65536").End(xlUp).Row
この命令で最後尾の行番号が取得できます。
こうする事によって、データが増えてもマクロを修正せずに
使える様になります。
Sub Macro3()
'
' Macro3 Macro
g = Range("A65536").End(xlUp).Row
Range("A1:I" & g).Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2") _
, Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:= _
xlSortNormal, DataOption3:=xlSortNormal
End Sub
これでソートのマクロは完成です。
またまた長くなりましたので続きは明日にします。
Posted by ミール at 09:30│Comments(0)
│VBA