excel的一些小技巧教程Excel 加油站Office实用小技能get

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

2018-03-19  本文已影响11人  tobbyvic
people-3120717_640.jpg

在平常处理表格的时候,应该遇到过这种情况,有一个sheet中有很多行数据,然后要根据某一列来将这些数据进行分类,要分配到不同的表格中,如果数据量很大的话,就会有些困难。这个时候,使用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提取出来。

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

上一篇 下一篇

猜你喜欢

热点阅读