VBA: Extract Top 'x' Entries from each category

后端 未结 2 1036
温柔的废话
温柔的废话 2020-12-21 11:38

By way of simplified example, say you have the following dataset:

 A      B     C
Name  Group Amount
Dave    A     2
Mike    B     3
Adam    C     4
Charlie         


        
2条回答
  •  青春惊慌失措
    2020-12-21 11:58

    Something like this should work:

    Sub TopValues()
    
    Dim sht As Worksheet
    Dim StartCell As Range
    
    Set sht = Worksheets("Sheet1")
    Set StartCell = Range("A1")
    
    Set SrcRange = StartCell.CurrentRegion
    Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Data"
    For i = 1 To 3
        SrcRange.Sort Key1:=Worksheets("Sheet1").Range("A1").Offset(0, i - 1), Order1:=xlAscending, Header:=xlYes
        sht.Rows("2:3").EntireRow.Copy
        Worksheets("Data").Activate
        ActiveSheet.Range("A" & 2 * i).PasteSpecial
    Next i
    
    
    End Sub
    

    The Rows("2:3") and Range("A" & 2 * i) reflect your x value, which you said was 2 in this example. So the vba copies rows 2:3 and pastes them in row 2*i in the new sheet.

提交回复
热议问题