实例1: 统计每个人的培训天数

原始数据如下:

我的思路: 把E列的名字分开来,(都是逗号作为分隔符), 根据天数复制这些人名, 最后统计每一个人名出现的次数即可.

step1: E 列的人名分割

使用数据分列

得到结果如下

step2 : 根据天数复制名字, 比如第四行的E,F列, 复制2-1=1次!

VBA程序如下:

Sub test1()Dim w As WorksheetSet w = Worksheets("2018年修改")Dim i As Integer, j As Integer, num As Integer, col As IntegerDim r As Range, rr As Range' rr是需要复制的单元格 固定For i = 4 To 10 Step 1 ' 多少行num = Range("C" & i) - 1 '复制次数Debug.Print "复制次数" & numcol = w.Range("E" & i).End(xlToRight).ColumnIf col = 256 ThenSet rr = w.Range("E" & i)ElseSet rr = w.Range(Cells(i, 5), Cells(i, col)) '确定要复制的单元格End If'定位最右边的第一个单元格For j = 1 To num Step 1Set r = w.Range("A" & i).End(xlToRight).Offset(0, 1)rr.Copy r '复制Next jNext i
End Sub

得到

然后把这些数据放在一起, 去重,  统计每个人的出现次数即可.

一列数据的去重很简单, 只需要选中这一列, 删除重复项即可. 如何做一个区域的去重?

实例(2): 区域的数据去重

原始情况如下

VBA代码如下

Sub test3()  ' 区域去重
Dim Rng As Range, Arr, i As Long, j As Long, T As Boolean
j = 1
ReDim Arr(1 To 1)  ' arr 用来存储非重复项
T = True
For Each Rng In SelectionIf Rng.Value <> "" ThenFor i = 1 To j  ' j 是arr的长度, 遍历arr每一项If Arr(i) = Rng.Value Then ' 出现重复了Rng.Value = "" ' 删除重复的单元格内容T = FalseExit ForEnd IfNextIf T Then  ' 不是重复值j = j + 1 ' 增加数组长度ReDim Preserve Arr(1 To j)Arr(j) = Rng.Value ' 存储该单元格到数组中End IfT = TrueEnd If
Next
Range("E1:E" & j) = Application.WorksheetFunction.Transpose(Arr) ' 得到不重复项
End Sub

注意: ReDim Preserve的作用是重新分配数组空间 默认情况下重新分配空间后数组内容都会清空,加上preserve后可以保留原来的数据在进行分配空间!

得到结果. 其中监视arr的值如下.

      

转载于:https://www.cnblogs.com/xuying-fall/p/11398940.html

Excel VBA入门(9):实例汇总相关推荐

  1. Excel VBA 入门(零)

    本教程所用系统环境: Windows 10 Excel 2013 1. 添加开发工具 打开Excel,依然找到"文件"->"选项"->"自 ...

  2. Excel VBA入门的基础语句

    选择当前活动的工作簿: ThisWorkbook.Activate 如果选择其他工作簿,注意该工作簿一定是打开的,并且不要忘记加上后缀".xls" ,例如: Windows(&qu ...

  3. Excel VBA 入门demo,单元格json格式校验

    需求才是学习的第一生产力,学习VBA是因为要帮测试同学解决excel中的值校验问题.具体来讲,需要对指定单元格做数据格式校验,必须是json,不是json或者格式不对的,要有提示. 解决问题的方案很多 ...

  4. Excel VBA:按日期汇总计算输出结果(sumif)

    问题场景 1)按日期将C列的金额累计汇总 2)按日期和"支出/收入"汇总每日金额 PS:直接输出结果,不需要公式 参数定义&函数说明 参数定义: Range格式定义汇总范围 ...

  5. excel vba 入门语句精选

    VBA语句集 (第1辑) 定制模块行为 (1) Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用 ...

  6. 【Excel VBA】逐个读取Excel文件并将内容复制到汇总表中——每月自动汇总考勤数据实例

    纲举目张 说明 关键技术点:Workbooks.Open 代码code 运行效果图 使用说明 说明 上一讲[Excel VBA]利用数组.集合.循环等检查各单位报送情况--每月自动汇总考勤数据实例已经 ...

  7. Excel 2010 VBA 入门 088 数据处理之汇总列数不相等的多个工作表

    目录 示例 代码1 合并汇总(Consolidate)方法 Array函数 Evaluate方法构造数组 代码2 示例 如图所示,该工作簿中有若干个工资表,由于每个月发放的工资项目不同,因而造成每个工 ...

  8. vba怎么安装_VBA还要学吗?怎么入门Excel VBA?

    教程领到手,学习不用愁!领 ↑↑↑ 快捷高效入门:看知识兔视频课程,跟着知识兔老师操作,听知识兔老师讲解,边看边实练,初学者不要自己瞎琢磨瞎折腾,很容易走弯路.学以致用,光看不练都是假把式.学完知识兔 ...

  9. vba ado返回集合_利用ADO,实现同一文件夹下多个EXCEL工作表的数据汇总

    大家好,今天继续讲解<VBA数据库解决方案>,今日讲解的是第37讲,利用ADO,实现同一文件夹下多个EXCEL工作表的数据汇总.最近的内容实用性比较强,如今日的内容,只把需要汇总的EXCE ...

  10. excel vba 如何将日期周几转换成文字_Excel 从精通到入门

    Excel 从精通到入门 引子 Excel? 这么简单的东西有学的必要吗?公式加减乘除,诶等等这个日期怎么变成 #### 了,虽然文本数字搞不清楚,但也算熟练使用 Excel 啦. WOW, Awso ...

最新文章

  1. 在YII2框架中使用UEditor编辑器发布文章
  2. linux怎么下载yum包,Linux下yum下载依赖包
  3. 谈VHDL/Verilog的可综合性以及对初学者的一些建议
  4. Simbad的使用--检索、导入、保存
  5. 云表中表单使用导入excel到明细
  6. 草莓换个做法,迫不及待想要吃
  7. calfcamel 的 2333
  8. 64位计算机最大寻址,为什么说32位操作系统的寻址空间是4G
  9. cs231n计算机视觉课程笔记
  10. PowerShell:无法加载文件 XXXXXXX,因为在此系统上禁止运行脚本
  11. dashucoding记录2019.6.8
  12. 坐标反算用计算机怎么算,卡西欧5800计算器坐标正反算程序
  13. 纵观无盘系统发展历史
  14. getUserMedia API及HTML5 调用手机摄像头拍照
  15. [Telegram X]旧版分享 突破被锁群组
  16. android多文件上传错误,微信多图上传解决android多图上传失败问题
  17. 0716 POJ1222 EXTENDED LIGHTS OUT
  18. 智慧经营| 物业数字化管理系统
  19. ​美国UIUC信息学院汪浩瀚老师课题组招收全奖博士生及合作者
  20. 必修三计算机选修三知识点,高二数学必修三知识点归纳总结

热门文章

  1. 学生信息管理系统总体设计规划书
  2. windows无法打开添加打印机_打印机常见故障机及处理方法
  3. 高频电子线路复习考试题及答案
  4. reactos操作系统实现(110)
  5. 微软服务器补丁每月几号发布,微软11月安全公告 发布一个紧急级补丁
  6. c 易语言dll 循环,易语言的Dll命令及程序集知识点
  7. moxa串口卡Linux驱动,moxa多串口驱动下载
  8. 免费好用的划词搜题神器插件
  9. 【AS3代码】擦窗户效果(也就是流行的妄撮游戏)
  10. php 通过 谷歌邮箱发送邮件