写在前面:Excel VBA处理重复数据的方法
Excel-VBA中处我们在处理Excel数据时,很多时候都可以分为三个步骤,读取整理数据、计算构造输出数据、输出结果。
前者和后者会和Excel工作表交换处理数据,而中间的那个步骤则是在计算机内存中处理完成。
我们知道原数据的结构决定了算法,也就是说第一步的读取整理数据决定了中间的计算和后面的输出的代码难易度。 所以我们在设计源数据的时候,应该注意源数据的结构是否合理.
PS:这里我想说一下良好的编程习惯应该具有以下两点:
a.遵循一定的变量命名规则。每个人都会有自己的命名习惯,但我想说的是让这种习惯遵循一定的规则,并尽可能的让它表达自身的含义。
b.编写代码尽量写成一个模块,拎出来单独写个过程或是函数,其好处不仅仅是避免重复的代码,更大的好处是让你可以更为专注的解决一个相对独立的功能而不用去考虑全局的情况
给这个过程起一个恰当的名字,同样会让你的代码更容易看懂,让你的代码会说话。
今天和大家聊聊在Excel中如何使用VBA处理重复的数据的几种方法.
Excel数据处理的过程中,我们常常会遇到某个表格存在重复数据。但是在大多时候,我们常常需要这些重复数据进行处理,得到我们所需要的数据。
我们还来举一个例子,下图的数据我们其实非常常见,具体如下图所示
那么我们的问题就来啦!请看题:
假设我们要计算在职人员的所在的部门数量,我们应该怎么计算呢?同时还需要计算各部门的的人数分别是多少人?下面我们一步一步来实现。
按照前言所说,我们分析以上的数据发现,这个源数据的结果单一,数据十分规范,有规律.
我们处理数据首先就是读取数据,读取数据也就是我们常说的将Exce写入到计算机内存,在这个位置我们就想到的利用数组,将源数据区域写入内存.
我们选择合适方法,进行数据处理.我们想到的是利用字典的关键词数据不重复性,完成数据处理.
最后就是输出我们结果,也就是我们将处理过的数据,重新写入到表格中.
至此我们处理数据的三部曲是不是得到完整的体现.我们现在来看看具体的操作过程.
PS:我们主要利用字典,利用字典key不重复的特性,我们将省份存入字典中
我们看看执行后的结果:
黄色高亮区域即为我们利用字典的特性,将部门加入我们的字典当中,然后对重复的部门进行项的累加,从而达到计算重复的个数.当然我们也可以计算部门的工资的总额.
附上代码:
Sub test()
字典前期绑定写法
Dim d As New Dictionary
Dim arr, i&
清除H和I列的值
[h:i].ClearContents
将数据的单元格区域直接赋值给数组arr
arr = Range("a2:f15")
利用循环将字典特性,将部门的关键词写入到字典中,然后对他的项进行累加计算.
For i = 1 To UBound(arr)
这句话的意思就是,如果字典不存在这个部门的关键词,则将这个关键词写入到字典中.如果字典中已经存在这个关键词的话,则对他的项进行累加计算.也就是我们老生常谈的K=K+1.
d(arr(i, 2)) = d(arr(i, 2)) + 1
Next
写入标题
[h1].Resize(1, 2) = Array("部门", "人数")
在H列赋值我们字典中的所有关键词
[h2].Resize(d.Count) = Application.Transpose(d.Keys)
在H列赋值我们字典中的所有项
[i2].Resize(d.Count) = Application.Transpose(d.Items)
End Sub
写在结尾:
看了上面,你是不是发现利用字典和数组处理数据的重复计算,是不是如此简单!
其实我们学习Excel VBA没有那么难,他只能是算是解释型编程语言。所以如果你还是在是否学习犹豫不前,请不用担心,大步向前走吧!
PS:学习的苦难需要我们主动面对,生活的苦难你躺着它自己主动就过来啦!与君共勉之!!!
以上就是今天要和大家分享的技巧,希望对大家有所帮助,祝各位一天好心情!
如果有不明白的或者不懂的可以在下方留言,我们会一一解答的。