解析エンジニアの自動化 blog

コツコツと自動化した方法を残す blog

Excel VBA で昇順に並べ替える



こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。


この記事の目次



背景・目的


色々な VBA シーンに登場する並び替えですが、私は主に何かの処理の前処理や後処理で使っています。

いちいち書くのも、インターネットで探してコピペするのもめんどくさいので、サブルーチン化しておきます。



動作環境


Windows 7
Excel 2007



プログラム

ソースコード


Sub Test()
   
    ' アクティブシートのオブジェクト化
    Set sh = ThisWorkbook.ActiveSheet
   
    ' 並び替えのキーセルのオブジェクト化
    Set keyRng = sh.Cells(4, 1)
   
    ' 並び替え範囲のオブジェクト化
    Set sortRng = sh.Range(keyRng, keyRng.End(xlDown))
   
    ' ソートサブルーチンのコール
    Call 昇順ソート(sh, keyRng, sortRng)
   
End Sub


Sub 昇順ソート(ByVal objSheet, ByVal keyRng, ByVal sortRng)
   
    With objSheet.Sort
       
        ' ソート設定のクリア
        .SortFields.Clear
       
        ' ソート設定
        .SortFields.Add _
            Key:=keyRng, _
            SortOn:=xlSortOnValues, _
            Order:=xlAscending, _
            DataOption:=xlSortNormal
       
        ' ソート範囲の設定
        .SetRange sortRng
       
        ' ソート範囲の 1 行目がタイトルかどうかの設定
        .Header = xlNo
       
        ' 大文字、小文字の区別設定
        .MatchCase = False
       
        ' 並び替えの方向設定
        .Orientation = xlTopToBottom
       
        ' ふりがなの使用設定
        .SortMethod = xlPinYin
       
        ' 並び替え実行
        .Apply
       
    End With
   
End Sub



結果


図1 並び替え前



図2 並び替え後



コメント

並び替え出来ました。

個人的に降順の並び替えはあまりやったことがないので、降順の並び替えサブルーチンは作りません。



以上