vba 将数据分类到各个表中

1.将数据根据部门分类,分发到相应表中

除了第一张表有数值,其他表均为空

将数据分类代码如下:

Sub copy()

'根据表名筛选相应数据拷贝到相应表中'

Dim i, j As Integer

j = Sheet1.Range("a65535").End(xlUp).Row      ‘j为表1中最后一个数值,a65536为xls最后一个单元格,end(xlup)到最后一个有数值的单元格,所以j表示表1最后一行

For i = 2 To Sheets.Count

  Sheet1.Range("$A$1:$F$" & j).AutoFilter Field:=4, Criteria1:=Sheets(i).Name    ‘根据表名筛选

  Sheet1.Range("$A$1:$F$" & j).Copy Sheets(i).Range("a1")                ‘将筛选的数值拷贝到相应的表中

Next

End Sub

执行后结果


2.现在想根据指定的列分类,分类后的数据进行创建表。

根据输入的列分表相应代码如下:

Sub xinjianbiao()

Dim sht As Worksheet

Dim k,l  As Integer

l=input("输入分类的列")                  ‘需要将l进行定义,否则l是字符

For i = 1 To Sheets(1).Range("a65536").End(xlUp).Row

    k = 0

    For Each sht In Sheets

        If sht.Name = Sheet1.cells(i,l) Then               '用cells表示单元格,可以使用数字变量代表列

            k = 1

        End If

    Next

    If k = 0 Then

        Sheets.Add after:=Sheets(Sheets.Count)

        Sheets(Sheets.Count).Name = Sheet1.cells(i,l)

    End If

Next

end sub








3.现在想根据指定的列分类,分类后的数据进行创建表,并根据分类的数据拷贝到相应表中

完整流程展示


只有一张数据表



根据第4列部门进行分类



输出结果1


输出结果2

数据都根据第4列的值进行分类,根据分类创建了表并将相应的值放到相应的表中

一下展示完整的代码:

Sub delete()         ‘重新分类时需将之前的创建的表进行删除,不然表会越堆积越多

Dim i As Integer

Application.DisplayAlerts = False

For i = Sheets.Count To 2 Step -1

Sheets(i).delete

Next

Application.DisplayAlerts = True

End Sub

-------------------------

Sub 根据分类创建表()

Call delete     ‘调用上面的delete函数

Dim sht As Worksheet

Dim k, j,h As Integer

j = Sheet1.Range("a65535").End(xlUp).Row

h = InputBox("输入需要分类的列")

For i = 1 To j

    k = 0

    For Each sht In Sheets

        If sht.Name = Sheet1.Cells(i, h) Then

            k = 1

        End If

    Next

    If k = 0 Then

        Sheets.Add after:=Sheets(Sheets.Count)

        Sheets(Sheets.Count).Name = Sheet1.Cells(i, h)

    End If

Next

'根据分类拷贝到各个表中'

For i = 2 To Sheets.Count

  Sheet1.Range("$A$1:$F$" & j).AutoFilter Field:=h, Criteria1:=Sheets(i).Name

  Sheet1.Range("$A$1:$F$" & j).copy Sheets(i).Range("a1")

Next

End Sub

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。