我有一张我想用 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 列只有值“关闭”或“打开”,但没有公式),相同的代码可以正常工作。
我还可以使用公式在工作表上的 Excel 中手动执行排序,并且在那里工作正常。
我尝试过的其他故障排除步骤:
最佳答案
我从不喜欢使用 ActiveSheet.Sort
,更喜欢更明确的 Range.Sort
.这似乎对我有用:
Range("A1:C3").Sort Range("C1"), xlDescending, Header:=xlYes
另外:你可能想做
.SortFields.Clear
首先进入你的With
堵塞。我不确定这是否会解决它,但它会摆脱任何以前存在的排序字段,这些字段可能指定不正确。
关于对公式生成的值进行排序时,VBA 排序无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51428401/