我最近开始用VBA写作多年来用其他各种语言写的。我目前在使用Excel VBA中的过滤器时遇到了一些奇怪的问题,并想知道是否有人可以了解我遇到的行为。
我想通过多个不同的列过滤数据集,一次一个,我这样做是通过将我的数据集复制到新工作表并在那里对数据进行排序。对于我使用的第一个过滤器:
Sheets("Temp Data").Range("A:T").ClearContents
Sheets("Main Sheet").Range("A1", "T" & CountLV_Rows).Copy Sheets("Temp Data").Range("A1", "T" & CountLV_Rows)
Sheets("Temp Data").Range("A1", "T" & CountLV_Rows).Sort Key1:=Range("R1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
这很有效。我现在想要按照Col C INSTEAD中的值进行过滤,我重复上面的代码(包括clearcontents
命令,因为我认为这会提高我成功的机会......并且只需交换Key1
价值为C1
对于第二个(希望是新的过滤器),我使用了:
`Sheets("Temp Data").Range("A:T").ClearContents
Sheets("Main Sheet").Range("A1", "T" & CountLV_Rows).Copy Sheets("Temp Data").Range("A1", "T" & CountLV_Rows)
'Sort the data so ascending site numbers in column C
Sheets("Temp Data").Range("A1", "T" & CountLV_Rows).Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal`
但是,我的数据在首先按列R ...
排序后按列C排序如何擦除以前应用的所有排序?
感谢您的帮助
答案 0 :(得分:0)
我认为这可能与您未对工作表和范围进行限定这一事实有关,即明确指定它们所在的工作簿或工作表。这是您一直想做的事情。
我已经在下面完成了它,它在Excel 2010中适用于我:
Sub test()
Dim CountLV_Rows As Long
Dim wbActive As Excel.Workbook
Set wbActive = ActiveWorkbook
With wbActive
.Sheets("Temp Data").Range("A:T").ClearContents
CountLV_Rows = .Sheets("Main Sheet").Range("A" & Rows.Count).End(xlUp).Row
.Sheets("Main Sheet").Range("A1", "T" & CountLV_Rows).Copy _
Destination:=.Sheets("Temp Data").Range("A1", "T" & CountLV_Rows)
With .Sheets("Temp Data")
.Range("A1", "T" & CountLV_Rows).Sort Key1:=.Range("R1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
.Activate
MsgBox "Sorted by R"
.Range("A1", "T" & CountLV_Rows).Sort Key1:=.Range("C1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
End With
End Sub