【Excelマクロ】値を書き込んだらリアルタイムにソートする

2020年8月12日エクセル

下記の要望に対応するVBAマクロを作成しました。
・Excelで値を変更したら、リアルタイムに列のデータを並べ替えたい
・貼り付けなどで複数セルを一気に編集することがある。編集した範囲をまとめて並べ替えたい

値を書き込んだらリアルタイムにソート

このケースがそのまま該当することは少ないかもしれませんが、Excel作業を効率化したい方の参考になればと思い共有します。
下記のソースコードを該当シートのマクロに書けばOKです。

プログラミング的なポイントは、変更した範囲の列だけをソートして、余計な時間をかけないようにすることです。

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim colBegin As Long 'ソート対象列の開始列番号
    Dim colEnd As Long 'ソート対象列の終了列番号
    Dim colCount As Long '編集された列数
    Dim colStr As String 'ソート列名
    Dim l As Long
    Dim ws As Worksheet
    
    Set ws = ActiveSheet
    
    colBegin = Target.Column
    colCount = Target.Columns.count
    colEnd = colBegin + colCount - 1
    
    For l = colBegin To colEnd
        colStr = Split(Cells(, l).Address, "$")(1)
        'Debug.Print (colStr) 'デバッグ用 ソート対象の列名を確認
        ws.Sort.SortFields.Clear
        ws.Sort.SortFields.Add Key:=Range(colStr & "1"), Order:=xlAscending
        ws.Sort.SetRange Range(colStr & ":" & colStr)
        ws.Sort.Apply
    Next
        
End Sub

ちなみに、マクロを組むほどではないにしてもソート機能をよく使用するのであれば、ショートカット(アクセスキー)を覚えておくと便利です。ソート機能のショートカットキーは「ソート範囲を選択してAlt→h→s→u」です。

Excelでの定型作業は、ショートカット、関数、マクロを活用して、できるだけ効率化しましょう。

Excel作業を楽にしよう

日頃、面倒だなと思っている作業も、Excelのことを少し知るだけで簡単に片付けられるようになったりします。
どんなことができるのかを知っているだけでも違うので、よくExcelを使うという方は参考書などをざっと見てみることをオススメします!

Kindle Unlimited会員なら無料で読めるExcel関連書籍を紹介しておきます。

エクセルExcel

Posted by moto2g