排序,然后重新排序

时间:2018-05-31 19:25:00

标签: vba sorting

enter image description here我试图将Buy列从最大到最小排序,然后复制并粘贴到另一列,然后我将Sell列从最大到最小排序,然后再次复制并粘贴到另一列。代码不会排序,复制/粘贴,重新排序,然后复制/粘贴;换句话说,它只保留了购买的原始排序。有没有办法对购买进行分类,将它们粘贴到其他地方,然后对销售进行分类并同样复制?我正在考虑尝试do循环,但我不知道为什么我不能以更简单的方式做到这一点。任何见解都会有所帮助谢谢!

' 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

   'copy top ten buys
    Range("A5:I14").Select
    Selection.Copy
    Range("k3").Select
    ActiveSheet.PasteSpecial
    Application.CutCopyMode = False 

' sells
    ActiveSheet.AutoFilter.Sort.SortFields.Clear  
    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("k14").Select
    ActiveSheet.paste
    Application.CutCopyMode = False

1 个答案:

答案 0 :(得分:1)

由于您只添加了一个新的排序键,因此第二种排序将出现在Buy Sell列上。在第二次搜索之前做Sortfields.clear。