VBA数组与字典第39讲:利用数组与字典,实现双条件数据汇总

VBA数组与字典第39讲:利用数组与字典,实现双条件数据汇总大家好,我们今天继续讲解VBA数组与字典解决方案,今日的内容是第39讲,利用数组与字典,实现双条件数据汇总的方法。大家或许在之前没有接触过字典,

大家好,欢迎来到IT知识分享网。

大家好,我们今天继续讲解VBA数组与字典解决方案,今日的内容是第39讲,利用数组与字典,实现双条件数据汇总的方法。大家或许在之前没有接触过字典,其实,字典在VBA中占据着很重要的内容。大家已经注意到了,字典的应用和数组是密不可分的。要想理解字典的应用,必须要掌握数组的用法,对于数组的理解要透彻后才能谈到字典的理解,字典本身其实非常的简单,就是要灵活的利用他的键和键值。

我们今日的内容是实现双条件的数据汇总,如下的数据,我们要根据A列和B列的值对C列数据实现汇总求和:

VBA数组与字典第39讲:利用数组与字典,实现双条件数据汇总

怎么能做到呢?我刚才讲过,对于字典的本身定义非常的简单,要深入的理解键和键值,巧妙的应用。下面看我给出的代码:

Sub mynzsz_39() ’39 利用数组与字典,实现双条件数据汇总的方法

Dim myarr

Sheets(“39”).Select

‘将数据装入数组

myarr = Range(“a2:c” & Range(“c2”).End(xlDown).row)

Set myDic = CreateObject(“Scripting.Dictionary”)

For i = 1 To UBound(myarr, 1)

‘利用”丨”将数组的第一第二列合并,以利用查询

mykey = myarr(i, 1) & “丨” & myarr(i, 2)

‘如果存在,合并值,如果不存在建立新的

If Not myDic.exists(mykey) Then

myDic(mykey) = myarr(i, 3)

Else

myDic(mykey) = myDic(mykey) + myarr(i, 3)

End If

Next

Range(“g1:I1”) = Array(“型号”, “类别”, “数量”)

‘提取键数组,这个时候的元素是用”丨”隔开的,用replace分别替换掉左右的字符

myarr1 = Array(myDic.Keys)

Range(“g2”).Resize(myDic.Count, 2) = Application.Transpose(myarr1)

Range(“g2”).Resize(myDic.Count, 1).Replace “丨*”, “”, xlPart

Range(“h2”).Resize(myDic.Count, 1).Replace “*丨”, “”, xlPart

‘提取键值数组

myarr2 = Array(myDic.items)

Range(“I2”).Resize(myDic.Count, 1) = Application.Transpose(myarr2)

End Sub

代码截图:

VBA数组与字典第39讲:利用数组与字典,实现双条件数据汇总

代码讲解:

1 上述代码实现了根据数据的A列和B列进行汇总求和的功能,实现类似的办法可以用以前我讲过的方法代码循环,还可以用数据库,大家可以试着比较一下。

2 ‘将数据装入数组

myarr = Range(“a2:c” & Range(“c2”).End(xlDown).row)

上述代码实现将数据装入数组,以利用后续的操作。

3 mykey = myarr(i, 1) & “丨” & myarr(i, 2)

上述代码将数组的第一个元素和第二个元素合并,作为一个键,然后赋值

4 ‘如果存在,合并值,如果不存在建立新的

If Not myDic.exists(mykey) Then

myDic(mykey) = myarr(i, 3)

Else

myDic(mykey) = myDic(mykey) + myarr(i, 3)

End If

记住,上面的代码是判断键存在与否的标准语句,大家要利用好,这也是一个标准的写法。

5 myarr1 = Array(myDic.Keys)

Range(“g2”).Resize(myDic.Count, 2) = Application.Transpose(myarr1)

将键组成的数组回填给单元格,注意这里回填的是两列,下面还有对这两列分别处理

6 Range(“g2”).Resize(myDic.Count, 1).Replace “丨*”, “”, xlPart

上述语句去右留左。

Range(“h2”).Resize(myDic.Count, 1).Replace “*丨”, “”, xlPart

上述语句去左留右。

上述代码也可以作为标准的语句进行写法的记忆。

下面看代码的运行:

VBA数组与字典第39讲:利用数组与字典,实现双条件数据汇总

今日内容回向:

1 如何实现双列的数据汇总?

2 在字典中双列的汇总最关键的步骤是什么?

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/47726.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信