Microsoft Excel ワークシートの自動並べ替え

Microsoft Excel ワークシートの自動並べ替え

エントリが更新されるたびにテーブルを自動的に並べ替えるように Excel を構成 (スクリプトを使用することも可能) できますか?

答え1

グーグルでちょっと調べてみたら、次のことがわかりました。

http://www.techsupportforum.com/microsoft-support/microsoft-office-support/252123-can-someone-help-me-auto-sort-excel.html#post1499027

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not (Application.Intersect(Worksheets(1).Range("E9:F32"), Target) Is Nothing) Then
        DoSort
    End If
End Sub

Private Sub DoSort()
    Worksheets(3).Range("E3:M7").Sort Key1:=Worksheets(3).Range("M3"), Order1:=xlDescending, _
        Key2:=Worksheets(3).Range("L3"), Order2:=xlDescending, Header:=xlYes
    Worksheets(3).Range("E10:M14").Sort Key1:=Worksheets(3).Range("M10"), Order1:=xlDescending, _
        Key2:=Worksheets(3).Range("L10"), Order2:=xlDescending, Header:=xlYes
    Worksheets(3).Range("E17:M21").Sort Key1:=Worksheets(3).Range("M17"), Order1:=xlDescending, _
        Key2:=Worksheets(3).Range("L17"), Order2:=xlDescending, Header:=xlYes
    Worksheets(3).Range("E24:M28").Sort Key1:=Worksheets(3).Range("M24"), Order1:=xlDescending, _
        Key2:=Worksheets(3).Range("L24"), Order2:=xlDescending, Header:=xlYes
End Sub

私は VBA についてあまり知識がありませんが、これをカスタマイズする方法を説明しようと思います。それがうまくいかなかった場合は、お知らせください。 ;)

最初のサブでは、関数がいつ実行されるかを定義します。上記の行は、ワークシート 1 のセル E9 から F32 までが変更されたときに DoSort を開始することを示しています。

DoSort はいくつかの範囲を並べ替えますが、独自のデータ範囲にも適応できます。不要な行を削除し、ワークシート番号とデータ範囲を変更するだけです。

関連情報