美文网首页excel的一些小技巧教程Excel 加油站Office实用小技能get
EXCEL——VBA实现将一列数据按不同内容创建不同的表

EXCEL——VBA实现将一列数据按不同内容创建不同的表

作者: tobbyvic | 来源:发表于2018-03-19 19:49 被阅读11次
    people-3120717_640.jpg

    在平常处理表格的时候,应该遇到过这种情况,有一个sheet中有很多行数据,然后要根据某一列来将这些数据进行分类,要分配到不同的表格中,如果数据量很大的话,就会有些困难。这个时候,使用VBA编程就会大大提高效率了。

    • 下面我们来看看这个例子,我们要把下面这个截图中的数据根据部门的不同,分类到不同的表格中,如果我们要通过VBA编程的话应该如何来实现呢?


      image.png
    • 下面我们来看看代码,并对vba代码进行说明

    Sub 修改文件()
        Dim i, j, k
        i = 1
        For k = 2 To Sheet2.[a65536].End(3).Row
            If Cells(k, "a") <> Cells(k, "a").Offset(1, 0) Then
                'Sheets(1).HPageBreaks.Add before:=Cells(i, "a").Offset(1, 0)  这句话是不同的部门添加分页符,打印的时候会分页打印,这里暂且不需要
                '下面这句话是创建一个新的表格,并以部门名命名
                Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = Cells(k, "a").Value
                '下面这句话是将test表中的内容赋值给各个新创建的表格
                Worksheets(Worksheets.Count).Range("a1" & ":a" & k - i).Value = Sheet2.Range("a" & i + 1 & ":a" & k).Value
                Worksheets(Worksheets.Count).Range("b1" & ":b" & k - i).Value = Sheet2.Range("b" & i + 1 & ":b" & k).Value
                i = k
            End If
        Next
    End Sub
    

    从代码的注释中就可以大致看懂意思,短短几行代码就可以将不同部门的数据分别创建到新的表格中,本次场景的难点是

    1. 如何用VBA创建新的sheet
    Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = Cells(k, "a").Value
    

    这行代码就实现了在最后面创建新的工作表,并且设置表名为Cells(k, "a").Value
    具体如果要了解vba创建新的工作表,可以查找一下Worksheets.Add这个方法

    1. 如何将不同部门的数据分开
      我们是通过将两行数据进行对比来将数据进行区别的,具体就是这行代码:
    If Cells(k, "a") <> Cells(k, "a").Offset(1, 0) Then
    

    当这一行与下一行的单元格的值不一样的时候就可以判断是分属于不同部门的数据,此时就可以将不同部门数据分别创建新的sheet提取出来。

    • 最后我们来看一下最终的效果:


      3月-19-2018 19-47-30.gif

    希望对大家有所帮助^^, 不介意的话给点击个赞呗~

    相关文章

      网友评论

        本文标题:EXCEL——VBA实现将一列数据按不同内容创建不同的表

        本文链接:https://www.haomeiwen.com/subject/xeopqftx.html