tft每日頭條

 > 生活

 > vba去除重複值并寫入表格

vba去除重複值并寫入表格

生活 更新时间:2025-01-27 12:28:28

第三章 字典

3.4 去除重複項與分類彙總

由于字典的鍵具有唯一性,所以字典在去除重複項方面具有巨大的優勢,且代碼簡潔,使用靈活。

在上一節《字典的屬性》我們已經講過,利用字典與數組搭配,很方便快捷的就把重複項去除了。

把需要去除重複項的内容讀入數組:

arr = Range("a1:a100")

arr = Application.Transpose(arr)

然後利用字典的Item簡化版屬性,用For循環語句就會生成一個去除掉重複項的字典了:

For i = 1 To UBound(arr)

d(arr(i)) = ""

Next

利用字典的“鍵-值”對,以要統計的對象作為鍵,把要彙總的數值作為條目,就可以很輕松的實現分類彙總了。

小程序:

彙總各班級的成績

班級

成績

一班

15

一班

20

一班

35

二班

44

二班

28

二班

37

三班

66

三班

18

三班

99

四班

88

四班

89

四班

90

五班

91

五班

92

五班

93

六班

94

六班

95

六班

98

Sub 分類彙總()

Dim d As New Dictionary

arr = Range("a1").CurrentRegion

For i = 1 To UBound(arr)

d(arr(i, 1)) = d(arr(i, 1)) arr(i, 2)

Next

h = d.Count

Range("d1", Cells(h, "d")) = Application.Transpose(d.Keys)

Range("e1", Cells(h, "e")) = Application.Transpose(d.Items)

MsgBox "分類彙總成功!"

End Sub

在這個程序裡,首先把數據讀到arr數組裡,形成如下圖所示的數組:

vba去除重複值并寫入表格(學習VBA報表做到飛)1

我們還是利用了字典的Item簡化版屬性,用arr(i, 1)作為班級鍵值,arr(i, 2)作為待統計的數據。班級鍵值沒有寫入字典的,新增該班級鍵值和它對應的分數;班級鍵值已經存在的,則把循環到的分數累加到原來的條目上。最後把結果輸出到D、E列。程序運行結果如下:

vba去除重複值并寫入表格(學習VBA報表做到飛)2

同樣的,利用字典的“鍵-值”對,以要比較的對象作為鍵,把要比較的數值作為條目,就可以很輕松的實現取得每個對象的最大值、最小值了。

還是以上圖為例,獲取每個班級的最低分。

Sub 獲取最小值()

Dim d As New Dictionary

arr = Range("a1").CurrentRegion

For i = 1 To UBound(arr)

If d.Exists(arr(i, 1)) Then

If d(arr(i, 1)) > arr(i, 2) Then

d(arr(i, 1)) = arr(i, 2)

End If

Else

d.Add arr(i, 1), arr(i, 2)

End If

Next i

MsgBox Join(d.Keys)

MsgBox Join(d.Items)

End Sub

同樣是利用了字典的Item簡化版屬性,隻是多利用了字典的Exists屬性,增加了一條判斷班級鍵值是否在字典裡存在的判斷語句,因為字典的Item簡化版屬性會自動增加鍵值,但自動增加的對應條目為空,如果不用Add語句設置對應條目的第一個數值,會導緻判斷錯誤,最後得出的最小值全部為空。對班級鍵值對應的條目與循環到的數字相比較,留下最小值,最後把得到的結果用消息框彈出顯示。

vba去除重複值并寫入表格(學習VBA報表做到飛)3

vba去除重複值并寫入表格(學習VBA報表做到飛)4

往期精彩回顧:

學習VBA,報表做到飛 第三章 字典 3.3 字典的屬性

學習VBA,報表做到飛 第三章 字典 3.2 字典的方法

學習VBA,報表做到飛 第三章 字典 3.1 字典的引用

我是雲飛揚,職場财會人員,願與大家分享表格制作和數據統計分析的技巧與方法,希望大家的工作更便捷,更輕松!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved