bugfix> excel > 投稿

私は数字で並べ替える必要がある7つの数字の52個のランダムなセットを持っていますが、すべてのデータを強調表示して最小から最大に並べ替えようとすると、並べ替えは最初の列にのみ適用されるようです-

回答 1 件
  • Excelは、選択範囲の一番左のフィールド(または「列」)でソートし、それに応じて各行の関連する値を移動します。

    マクロを記録してから編集したので、動作するはずです。すべての値を選択してマクロを実行するだけです:

    Option Explicit
    Sub SortColumnsIndividually()
        Dim Column As Range
        For Each Column In Selection.Columns
            ActiveSheet.Sort.SortFields.Clear
            ActiveSheet.Sort.SortFields.Add Key:=Column, _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            With ActiveSheet.Sort
                .SetRange Column
                .Header = xlNo
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
        Next Column
    End Sub
    
    
    なぜこれが優れていたのですか?

    これは、Excelが各行を以下のコレクションとして扱うために発生します関連する値。 たとえば、次の表を検討してください。

    +-----------+-----------+--------+
    | FirstName | LastName  | Salary |
    +-----------+-----------+--------+
    | Bob       | Smith     |  45000 |
    | Jane      | Doe       |  55000 |
    | Susan     | Black     |  48000 |
    | Frank     | Daniels   |  51000 |
    +-----------+-----------+--------+
    
    

    給与の小さい順から大きい順にソートしたいとします。 Excelで給与の値を移動すると、給与フィールドだけを並べ替えるのではなく、関連する名と姓も移動することが予想されます。

    したがって、この表を昇順で給与でソートすると、この結果が期待できます。

    +-----------+-----------+--------+
    | FirstName | LastName  | Salary |
    +-----------+-----------+--------+
    | Bob       | Smith     |  45000 |
    | Susan     | Black     |  48000 |
    | Frank     | Daniels   |  51000 |
    | Jane      | Doe       |  55000 |
    +-----------+-----------+--------+
    
    

    これではありません(名前がどのように異なる給与にマッピングされているかを今すぐご覧ください?):

    +-----------+-----------+--------+
    | FirstName | LastName  | Salary |
    +-----------+-----------+--------+
    | Bob       | Smith     |  45000 |
    | Jane      | Doe       |  48000 |
    | Susan     | Black     |  51000 |
    | Frank     | Daniels   |  55000 |
    +-----------+-----------+--------+
    
    

    上記のケースは、Excelユーザーが行うソートタスクの大部分を代表しているため、これはExcelの予想される動作です。

あなたの答え