发生错误时排序时间数据

时间:2015-12-16 19:25:46

标签: excel vba excel-vba sorting

这是我开发的一小部分数据分析程序,用于读取多行并决定结构。宏的一部分依赖于每行数据的时间签名。我编写了这段代码来对时间进行排序,使其从最早到最晚运行,因为默认是最新的(从上到下)。它已经工作正常,直到一些数据有时间签名混合一点点(即19:01:16,19:00:00,18:52:07 ....... 18:48:05)它排序大约有四分之三的数据是正确的,然后它会再次随机重启(意味着最早的数据会再次上升。有什么想法吗?

以下是代码:

'Formats Time data to avoid consolidated trade structures
ThisWorkbook.Sheets("Trade_Data_Insert").Range("b3:b" & lastRow).Select
ActiveWorkbook.Worksheets("Trade_Data_Insert").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Trade_Data_Insert").Sort.SortFields.Add Key:=Range("B3"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Trade_Data_Insert").Sort
    .SetRange Range("A3:Q278")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
Selection.NumberFormat = "[$-409]h:mm:ss AM/PM;@"

1 个答案:

答案 0 :(得分:0)

遗憾的是,问题非常愚蠢。数据已经增长到我预期的大小之外,因此排序范围不幸地捕获了最后几行。为愚蠢的问题道歉。

'Formats Time data to avoid consolidated trade structures
ThisWorkbook.Sheets("Trade_Data_Insert").Range("b3:b" & lastRow).Select
ActiveWorkbook.Worksheets("Trade_Data_Insert").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Trade_Data_Insert").Sort.SortFields.Add Key:=Range("B3"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Trade_Data_Insert").Sort
    .SetRange Range("A3:Q5000")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
Selection.NumberFormat = "[$-409]h:mm:ss AM/PM;@"