按包含数字的特定列对行进行排序

时间:2013-08-28 13:47:31

标签: excel vba sorting excel-vba

如何按包含数字的列按升序或降序对行进行排序? 我知道如何在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

1 个答案:

答案 0 :(得分: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然后使用filter或者排序后   内置排序方法。值按如下排序   如下:1,12,14,2,22222,5343,9。但我需要的结果如下:   1,2,9,12,14,5334,22222。是否有内置功能?

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

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

现在数字应该正确排序。