用于自动过滤,自动复制的宏,然后在单独的工作表中自动粘贴

时间:2015-09-24 12:23:43

标签: excel vba excel-vba

我在excel中有以下类型的数据:

年|贸易流程|合作伙伴|商品代码|商品|数量单位|数量|净重(kg)|贸易价值(美元)

在年份列中,它的范围从1990年到2014年。我需要开发一个宏代码,以便它可以单独过滤年份的值,然后将其粘贴到同一个Excel文件的不同工作表中。

在这方面有任何帮助。会很棒的。

感谢。

1 个答案:

答案 0 :(得分:0)

遍历行。每次新的一年,插入当年的工作表并将行复制到它。

这假设您的数据位于sheet1上,并且您没有名为1990,1991,1992等的表格。

这也假定您的数据按ColumnA(年份)排序。

Private Sub CommandButton1_Click()

    Dim ws As Excel.Worksheet
    Dim strValue As String

    Set ws = ActiveWorkbook.Sheets("Sheet1")

    Dim jRow As Long
    Dim lRow As Long
    lRow = 1
    jRow = 1

    ws.Activate
    'Loop through and copy the records to the new sheet.
    Do While lRow <= ws.UsedRange.Rows.count

        'If this is a new year, create a sheet for it.
        If ws.Range("A" & lRow).Value <> strValue Then
            strValue = ws.Range("A" & lRow).Value
            Worksheets.Add(After:=Worksheets(Worksheets.count)).name = strValue
            jRow = 1
        End If

        ws.Rows(lRow).Copy Destination:=Worksheets(strValue).Range("A" & jRow)

        jRow = jRow + 1
        lRow = lRow + 1
    Loop

End Sub