2017-06-16 124 views
0

我尝试对范围进行排序(包含3列)我想对第二列的数据进行排序,如果在该列中有两个相同的东西,我希望它对它进行排序通过第一列。对范围进行排序Excel表示范围为空

第二和第一列中总是充满

下面是我用的线,但我不断收到错误:

Runtime error 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

Target.Sheets("SheetToSort").Range("A1:C" & m).Sort Key1:=Range("B1:B" & m), Order1:=xlAscending, key2:=Range("A1:A" & m), order2:=xlAscending

目标是定义的工作簿,工作表存在,单元格"A1:C" & m只包含数据列C可能有空的空格,但我没有对该列上的任何内容进行排序。

感谢您的帮助!

回答

1

我只是确保所有的范围是指在同一张纸上,所以修改它是这样的:

Target.Sheets("SheetToSort").Range("A1:C" & m).Sort _ 
Key1:=Target.Sheets("SheetToSort").Range("B1:B" & m), Order1:=xlAscending, _ 
Key2:=Target.Sheets("SheetToSort").Range("A1:A" & m), Order2:=xlAscending 

我知道我在哪里发生了这种情况以前也有问题,因为Range对象,当您没有指定工作表,可能会指向您认为不同的工作表。

+1

因此,请阅读[VBA最佳实践:永不假定工作表](https://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/9218/never-assume-the-worksheet)。 –

+0

好像真的被解决了!谢谢 :) – KawaRu