我正在尝试在单独的工作表中对范围进行排序。 但是,我一直收到这条消息:
'1004': "The sort reference is not valid. Make sure it's within the data you want to sort, and the first Sort By box isn't the same or blank.
我检查了范围,它们都存在且正在工作。
代码如下:
Dim EmpBRange As String
EmpBRange = Sheets("EmployeeData").Cells(Cells.Rows.Count, "B").End(xlUp).Row
Worksheets("EmployeeData").Range("K3:K" & EmpBRange).Sort Key1:=Range("K3:K" & EmpBRange), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
提前致谢
答案 0 :(得分:22)
我怀疑您需要完全限定Key1
范围,因为您从另一张表中调用代码:
Worksheets("EmployeeData").Range("K3:K" & EmpBRange).Sort Key1:=Worksheets("EmployeeData").Range("K3:K" & EmpBRange)
这通常是一个好主意。
答案 1 :(得分:0)
我一直在尝试使用Sort
方法,但是来自Powershell。我只有The sort reference is not valid
部分没有Make sure it's within the data you want to sort, and the first Sort By box isn't the same or blank
部分。这就是我到达这里的方式。
我的问题是由于忽视了Sort
电话的争论。如果您仔细观察文档,您会看到密钥中间有一个Type
参数,并且订购了参数:
表达式.Sort(Key1,Order1,Key2,Type,Order2,Key3,Order3,Header,OrderCustom,MatchCase,Orientation,SortMethod,DataOption1,DataOption2,DataOption3)
我已经通过了$null
,我的方法调用开始工作了。接下来奇怪的是,由于某种原因Key2 / Order2
被忽视了。我使用所有3个键来排序我的数据。解决方法是在方法调用中将Key2 / Order2
与Key3 / Order3
参数交换。奇怪的是,它起作用了。