根據數據分類不同,利用數組分別提取填入不同的工作表中

大家好,今日我們繼續講解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 如何實現工作表的插入?


分享到:


相關文章: