-2

如何按包含以升序或降序排列的数字的列对行进行排序?我知道如何在 VBA 中使用过滤器和使用排序功能进行排序。但它仅按字母顺序排序,而不是按数字排序。

到目前为止,我已经完成了。但排序仍然是按字母顺序排列的。

Sub sortdata()
Dim LastRow As Integer

NoOfRows = Sheets("RawData").Range("A" & Rows.Count).End(xlUp).Row
Sheets("RawData").Rows("2:" & NoOfRows).NumberFormat = "0"
    Sheets("RawData").Sort.SortFields.Add Key:=Range("A1"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Sheets("RawData").Sort
        .SetRange Range("A1:B" & NoOfRows)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub
4

1 回答 1

1

我更喜欢 Range.Sort 方法:

[编辑 2]:我添加了 .TextToColumns 行以编程方式解决存储为文本问题的数字

Sub sortdata()

    Dim ws As Worksheet

    Set ws = Sheets("RawData")

    With ws.Range("A1:B" & ws.Cells(Rows.Count, "A").End(xlUp).Row)
        Intersect(.Cells, ws.Columns("A")).TextToColumns
        .Sort Intersect(.Cells, ws.Columns("A")), xlAscending, Header:=xlGuess
    End With

End Sub

[编辑]:阅读提问者的评论后:

我将提供一个例子。如果 A 列包含以下值:1,2,55,12,14,5343,22222,9 然后使用过滤器或内置排序方法进行排序。值排序如下:1,12,14,2,22222,5343,9。但我需要的结果如下:1,2,9,12,14,5334,22222。是否有任何内置功能?

问题是您的数字存储为文本。您需要将它们转换为数字。

选择A列->数据->文本到列->完成

现在数字应该正确排序。

于 2013-08-28T14:47:38.423 回答