2017-02-22 71 views
0

我錄一個宏挑的前十名最大的行業排序第一十個購買然後十銷售。根據D列排序數據後,它複製交易信息並將其粘貼到另一個單元格中。
然後它按E列,以獲得最大的銷售,並複製相同的數據範圍到另一個細胞糊。
的問題是,它會複製錯誤的信息,因爲它不能在同一時間被列d和E的數據進行排序。我如何讓宏複製並粘貼正確的信息?宏觀變化的數據覆蓋以前的數據

Sub ttt() 
' 
' ttt Macro 
' top ten trades output 
' 
' Keyboard Shortcut: Ctrl+Shift+T 


' buys 

    Rows("3:3").Select 
    Selection.AutoFilter 

    ActiveSheet.AutoFilter.Sort.SortFields.Add Key:=Range("D3" _ 
     ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ 
     xlSortTextAsNumbers 
    With ActiveSheet.AutoFilter.Sort 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
    Range("A5:I14").Select 
    Selection.Copy 
    Range("K3").Select 
    ActiveSheet.paste 
    Application.CutCopyMode = False 


' sells 



    ActiveSheet.AutoFilter.Sort.SortFields.Add Key:=Range("E3" _ 
     ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ 
     xlSortTextAsNumbers 
    With ActiveSheet.AutoFilter.Sort 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
    Range("A5:I14").Select 
    Selection.Copy 
    Range("u3").Select 
    ActiveSheet.paste 
    Application.CutCopyMode = False 

End Sub 

回答

1

如果錄製使用宏錄製這些步驟,你會發現,它簡單的包含兩類之間以下行實現它:

ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear 

在你的情況,這將是

Activesheet.AutoFilter.Sort.SortFields.Clear 

,並且應該在嘗試.Add之前放置新的SortField,即用於列E的那個。(宏記錄器還在第一個Add之前插入該行,以確保安全。)

+0

此使用「清除」命令工作。謝謝你的幫助 –

2

有了一個大牌子,就像在世界摔跤聯合會 - do not do this at home - 你可以嘗試這樣的:

Sub ttt() 
' 
' ttt Macro 
' top ten trades output 
' 
' Keyboard Shortcut: Ctrl+Shift+T 


' buys 

    Rows("3:3").Select 
    Selection.AutoFilter 

    ActiveSheet.AutoFilter.Sort.SortFields.Add Key:=Range("D3" _ 
     ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ 
     xlSortTextAsNumbers 
    With ActiveSheet.AutoFilter.Sort 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
    Range("A5:I14").Select 
    Selection.Copy 
    Range("K3").Select 
    ActiveSheet.paste 
    Application.CutCopyMode = False 


' sells 

    Rows("3:3").AutoFilter 
    Rows("3:3").AutoFilter 



    ActiveSheet.AutoFilter.Sort.SortFields.Add Key:=Range("E3" _ 
     ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ 
     xlSortTextAsNumbers 
    With ActiveSheet.AutoFilter.Sort 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
    Range("A5:I14").Select 
    Selection.Copy 
    Range("u3").Select 
    ActiveSheet.paste 
    Application.CutCopyMode = False 

End Sub 

我已經添加和刪除自動篩選,所以它應該是工作。