0

我最近开始用 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 排序...

如何擦除以前应用的任何类型?

谢谢你的帮助

4

1 回答 1

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
于 2012-12-10T15:52:15.083 回答