我有一张要使用VBA排序的值。我想按特定标题的降序排列(反向字母顺序)。我的工作表如下所示:
A B C
1 Date Opened Date Closed Status
2 07/12/17 07/15/17 closed
3 07/16/17 open
计算列C的值,因此,如果“关闭日期”列中没有任何内容,则状态将自动设置为“打开”。
我想使用VBA按相反的字母顺序按C列对表进行排序,以便打开的票证出现在关闭的票证之前。这是我要使用的VBA:
Sub Sort_Status()
With ActiveSheet.Sort
.SetRange Range("A1:C3")
.SortFields.Add Key:=Range("C2:C3"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.Header = xlYes
.Apply
End With
End Sub
如果我在其中包含公式的数据表上运行此命令,则会收到错误:1004: The sort reference is not valid. Make sure that it's within the data you want to sort, and the first Sort By box isn't the same or blank.
但是,如果我将这些值粘贴到新的工作表中(例如,以使C列仅具有值“ closed”或“ open”,但没有公式),则相同的代码也不会出错。
我还可以在带有公式的工作表上用Excel手动执行排序,在这里工作正常。
我尝试过的其他故障排除步骤:
答案 0 :(得分:2)
我从不喜欢使用ActiveSheet.Sort
,更喜欢使用更明确的Range.Sort
。这似乎对我有用:
Range("A1:C3").Sort Range("C1"), xlDescending, Header:=xlYes
也:您可能想先在.SortFields.Clear
块内执行With
。我不确定是否可以解决此问题,但是它会摆脱以前可能不正确指定的所有排序字段。