Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 排序时间数据时出错_Vba_Excel_Sorting - Fatal编程技术网

Vba 排序时间数据时出错

Vba 排序时间数据时出错,vba,excel,sorting,Vba,Excel,Sorting,这是我开发的数据分析程序的一小部分,用于读取多行数据并确定结构。宏的一部分依赖于每行数据的时间签名。我编写这段代码是为了对时间进行排序,以便它从最早到最晚运行,因为默认值是从最晚到最早(从上到下)。它一直工作得很好,直到一些数据的时间签名混合了一点(即19:01:16,19:00:00,18:52:07………18:48:05),它正确地排序了大约四分之三的数据,然后再次随机重新启动(意味着最早的数据即将再次上升。有什么想法吗 代码如下: 'Formats Time data to avoid c

这是我开发的数据分析程序的一小部分,用于读取多行数据并确定结构。宏的一部分依赖于每行数据的时间签名。我编写这段代码是为了对时间进行排序,以便它从最早到最晚运行,因为默认值是从最晚到最早(从上到下)。它一直工作得很好,直到一些数据的时间签名混合了一点(即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;@"

不幸的是,这个问题非常愚蠢。数据已经超出了我的预期大小,因此排序范围无法捕获最后几行。很遗憾,对于一个愚蠢的问题,我深表歉意

'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;@"

您显示的时间字符串
2PM
202PM
将不会被Excel解释为时间,因此它们将被排序为字符串。如果您希望信息正确排序,必须首先使数据一致。可能您的数据是日期-时间序列号和文本的混合体,格式为时间,看起来像time@RonRosenfeld我应该说得更具体一点,因为我打字很快。它们最初是以19:01:16等格式显示的。我将编辑帖子。@chrisneilsen它似乎是时间。导入原始数据时,它列为19:07:16,然后如果我查看公式栏,它显示7:01:16 pma在Excel中定义区域时总是动态的-尤其是如果您已经在VBA中编码了。