在VBA中,字典是一个很重要的概念,有点你我们生活中用到的字典,(你可以通过pinyin或部首,查找到某个字),VBA中的字典,可以根据一个关键字(key)查询一个值(item),且关键字(key)是唯一的,不能重复,但是值(item)可以重复。利用字典这一特性唯一关键字---值的特性,可以快速进行分类汇总。

上一篇,讲了VBA中运用字典进行分类汇总的四种情况

1)单条件单列汇总

2)单条件多列汇总

3)多条件单列汇总

4)多条件多列汇总

但是前面这四种都是针对单一对象(如商品A或业务员张三商品A)进行的汇总,如果要做一个多个对象的汇总表,该如何做呢。比如,已知原始表见下方

表1:原始表:

产品

月份

费用

A

1月

10

B

1月

20

C

1月

1000

A

1月

10

B

1月

200

C

2月

309

D

2月

24

E

2月

34

A

2月

33

B

2月

12

C

2月

3000

D

3月

20

A

3月

50000

C

3月

2

E

3月

34

A

3月

800

D

3月

30

A

4月

10

B

4月

20

C

4月

1000

A

4月

10

B

5月

200

C

5月

309

D

5月

24

E

5月

34

A

5月

33

B

5月

12

C

6月

3000

D

6月

20

A

6月

50000

C

6月

2

E

6月

34

A

6月

800

D

6月

30

要求,根据上表(表1)数据做成如下格式的表2:分类汇总表

产品

1月

2月

3月

4月

5月

6月

合计

A

 

 

 

 

 

 

 

B

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

E

 

 

 

 

 

 

 

分析思路:

表1原始表显然属于一维表,表2分类汇总表属于二维表。由表2可知需要汇总数据的关键字(key)为“产品“+”月份“ 或 “产品”+“合计”,这样的话,我们只需要在字典中将关键字(key)设置为“产品”+“月份” 或 “产品”+“合计”,如“A” & “-” & “1月”,“A” & “-” & “合计”。然后根据表2分类汇总表中的列标和行标确定关键字(key),如“A” & “-‘ & ”1月“,相对坐标为(2,2),将字典中key对应的值item,填入相应的位置(相对坐标(2,2)即可。

VBA代码如下:

Sub tt()

Dim arr, arr1

Dim d As New Dictionary

Dim n As Integer, i As Integer, j As Integer, st As String

Dim rg As Range

Dim r As Integer, c As Integer

n = Range("A65536").End(xlUp).Row

arr = Range(Cells(2, 1), Cells(n, 3))

For i = 1 To n - 1 Step 1

st = arr(i, 1) & "-" & arr(i, 2)

d(st) = d(st) + arr(i, 3)

st = arr(i, 1) & "-" & "合计"

d(st) = d(st) + arr(i, 3)

Next i

Set rg = Range("F1")

r = rg.CurrentRegion.Rows.Count

c = rg.CurrentRegion.Columns.Count

For i = 2 To r Step 1

For j = 2 To c Step 1

st = rg.Offset(i - 1, 0) & "-" & rg.Offset(0, j - 1)

rg.Offset(i - 1, j - 1) = d(st)

Next j

Next i

End Sub

VBA用字典实现分类汇总(二)相关推荐

  1. VBA用字典实现分类汇总(一)

    VBA中字典的每一个key对应一个唯一的item,只要指定key的值,就可以马上返回其对应的item,利用字典这一特性可以实现快速的分类汇总.分类汇总可以分以下四种情况: 1.单条件单列汇总,如求商品 ...

  2. 20210112.使用字典来创建并分类汇总物品清单的python程序代码

    20210112.使用字典来创建并分类汇总物品清单的python程序代码 #这段代码使用字典来创建并分类汇总物品清单.为<python编程快速上手--让繁琐工作自动化>一书中的5.6.1实 ...

  3. Excel VBA 多条件筛选及汇总统计

    Excel VBA 多条件筛选 AdvancedFilter 汇总统计 sumproduct Range与Array交换 在日常工作中,面对Excel表格数据,为了分类进行统计,通过对表格数据筛选获取 ...

  4. sql查询语句_多字段分类汇总_多表合并

    一.最初(最简单的入门实例,单个分类汇总) 1,查询语句/*药品费用分科室汇总*/ select c.sksxx02,sum(nvl(b.nfyxx06,0))         from yygli6 ...

  5. excel按季度分类汇总_Excel数据透视不会,分类汇总来帮忙,强的不是一点,学会它,错不了...

    Excel数据透视不会,分类汇总来帮忙,强的不是一点,学会它,错不了 大家办公经常要用到Excel处理数据,想要对成千上万条数据做分类汇总,则需要做数据透视表和分类汇总功能:在数据量适中即小于万条时, ...

  6. Android开源项目分类汇总-转载

    太长了,还是转载吧... 今天在看博客的时候,无意中发现了@Trinea在GitHub上的一个项目Android开源项目分类汇总,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有 ...

  7. Android开源项目分类汇总[转]

    Android开源项目分类汇总 如果你也对开源实现库的实现原理感兴趣,欢迎 Star 和 Fork Android优秀开源项目实现原理解析 欢迎加入 QQ 交流群:383537512(入群理由需要填写 ...

  8. 2018年视觉所有干货博文的分类汇总

    原文:转载自 我爱计算机视觉 https://mp.weixin.qq.com/s?__biz=MzIwMTE1NjQxMQ==&mid=2247485040&idx=1&sn ...

  9. sql 分类汇总 列_分类汇总哪家强?R、Python、SAS、SQL?

    Excel数据透视表(Pivot Table)可以快速汇总大量数据,能够分类汇总和聚合数值数据,按类别和子类别汇总数据,功能十分强大,并且提供了展开.折叠.行列交换等交互式方法,对使用者来说十分的友好 ...

最新文章

  1. 李沐团队半年离开六人,MxNet是否英雄落幕?贾扬清:关键能否解决新痛点
  2. 数组做参数_ES6 系列:你不知道的 Rest 参数与 Spread 语法细节
  3. python代码计算图像的分辨率
  4. python数据处理实例-Python数据处理numpy.median的实例讲解
  5. [Python]网络爬虫(二):利用urllib2通过指定的URL抓取网页内容
  6. C语言插入排序Insertion Sort算法(附完整源码)
  7. Shell多线程操作及线程数控制实例
  8. 【CZY选讲·Yjq的棺材】
  9. 【转】系统管理员之企业生存守则
  10. 一本经典的程序员必看书籍————人月神话
  11. TextWatcher学习
  12. 电子技术部下半学期第一次培训
  13. IntelliJ IDEA使用教程
  14. 搜狗收录提交方法搜狗收录方法
  15. 论文阅读:Unprocessing Images for Learned Raw Denoising
  16. Android power键亮屏流程
  17. Minimum spanning tree
  18. Android 判断通知栏是否打开及前往设置页面
  19. 【历史上的今天】9 月 2 日:互联网的“诞生日”;三星逐步跌落神坛;世界上第一个 ATM 自动取款机
  20. 天嵌i.mx6q--1

热门文章

  1. python怎么通过手机号定位_python通过手机号获取微信男女性别
  2. 第1章 多媒体技术概要
  3. CodeMirror的认识和使用
  4. 【转】Vczh Library++3.0之可配置语法分析器(前言)
  5. summernote 的快速使用,以及解决图片写入数据库问题
  6. Vivado出现编译错误:[USF-XSim 62] 'compile' step failed with error(s) while executing...
  7. (专升本)Word插入操作(图片、剪贴画、屏幕截图、自选图形)
  8. html 设置整体字体,HTML字体的设置
  9. 移动IP技术研究(转)
  10. 利用Android手机为游戏手柄,超强的AIWI体感游戏