根据数据分类不同,利用数组分别提取填入不同的工作表中

大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第77讲内容:根据数据分类不同,利用数组分别提取填入不同的工作表中。

数据处理中有一块内容是数据的分类,数据的分类一般来讲也可以用两种办法来实现,一是数组方法,一是字典方案,在77和78讲中我将就这两种方案详细讲解,今日讲解的是数组方案。利用数组进行分类,这讲中我介绍的是固定分类,就是事先知道这些数据该如何分类,然后按照分类的要求,新建不同的工作表,把这些数据填到各自工作表中。

实例,如下为部分数据截图,我们将按照编号的不同分别建立不同的工作表,放进这些数据。

根据数据分类不同,利用数组分别提取填入不同的工作表中

如第一个数据是WG002放到WG002的工作表中,第13个数据是WG001放到WG001的工作表中,如何实现呢?

思路分析:这里涉及到几个知识点,其一是新工作表建立,其二是如何在源数据中提取数据,所以思路就这样建立,在源数据中建立循环,先按要求提取数据,然后,建立工作表填入数据后,之后再开始下一次循环。

下面看我给出的代码:

Sub mynzsz_77() '第77讲 根据数据分类不同,利用数组分别提取填入不同的工作表中

Sheets("77").Select

'定义一个动态数组存放结果

Dim mybrr()

'将数据放到数组中

myarr = Range("a1").CurrentRegion.Value

'定义新增工作表的表名称

myTable = Array("WG001", "WG002", "WG003", "WG004")

'在数组中按新增工作表的名称提取不同的值

For i = 0 To UBound(myTable)

For j = 2 To UBound(myarr)

If myarr(j, 2) = myTable(i) Then

t = t + 1

ReDim Preserve mybrr(1 To 4, 1 To t)

mybrr(1, t) = myarr(j, 1)

mybrr(2, t) = myarr(j, 2)

mybrr(3, t) = myarr(j, 3)

mybrr(4, t) = myarr(j, 4)

End If

Next j

'新增工作表

Set uu = Worksheets.Add(after:=Sheets("77"))

uu.Name = myTable(i)

'回填数据,设置格式

With uu

.Range("a1:d1") = Array("序号", "编号", "日期", "金额")

.Range("a2").Resize(t, 4) = _

WorksheetFunction.Transpose(mybrr)

.UsedRange.Borders.LineStyle = xlContinuous

End With

'清空数组

Erase mybrr()

t = 0

Next i

End Sub

代码的截图:

根据数据分类不同,利用数组分别提取填入不同的工作表中

代码分析:

1 上述代码实现了在源数据中按要求提取数据,然后新建一个工作表,把这些数据回填进去。在此,我们要把源数据存到数组myarr中,然后我们建立一个数组myTable,用于存放新增的工作表 Array("WG001", "WG002", "WG003", "WG004"),在工作表中建立循环时按照上述的特征提取数据。

2 '将数据放到数组中

myarr = Range("a1").CurrentRegion.Value

上述代码将源数据存放到数组myarr中。

3 '定义新增工作表的表名称

myTable = Array("WG001", "WG002", "WG003", "WG004")

上述代码是把提取数据的特征作为工作表的名称来对应。

4 '新增工作表

Set uu = Worksheets.Add(after:=Sheets("77"))

uu.Name = myTable(i)

上面的代码是新增工作表,工作表名称即是数据分类的要求。

5 '回填数据,设置格式

With uu

.Range("a1:d1") = Array("序号", "编号", "日期", "金额")

.Range("a2").Resize(t, 4) = _

WorksheetFunction.Transpose(mybrr)

.UsedRange.Borders.LineStyle = xlContinuous

End With

上述代码是回填数据,回填数据时用了转置处理。

6 '清空数组

Erase mybrr()

上述代码清空数组。

下面看代码的运行:

根据数据分类不同,利用数组分别提取填入不同的工作表中

根据数据分类不同,利用数组分别提取填入不同的工作表中

分类后,把源数据按照分类要求分类,然后分工作表回填。

今日内容回向:

1 如何按照数据的特征分类填入工作表?

2 如何实现工作表的插入?


分享到:


相關文章: