网站首页 > 技术文章 正文
工作中有时会遇到根据单元格格式,统计数据个数或汇总的要求,比如下图案例,要求统计表格中涂红色数据的个数,并对涂色数据进行汇总:
常用方法:宏表函数get.cell(63,ref)
因为我们不知道涂色的规律,所以无法利用规律走捷径,只能用单元格是否涂色作为判断条件。常用的方法就是利用宏表函数get.cell,第一个参数63用来返回填充色值,函数用法为get.cell(63,ref),ref为单元格或单元格区域,案例具体用法为:
1、鼠标选中A12单元格,点击菜单公式——定义名称——输入名称(gs,可随自己意愿取)——引用位置:输入公式=get.cell(63,sheet1!a2:e10)——确定。
2、鼠标框选a12:e20,在编辑栏输入公式=gs,按住ctr键回车,得到辅助区域数据。
3、利用辅助数据进行统计:统计个数,H2单元格输入公式:=COUNTIF(A12:E20,3)
统计合计,H3单元格输入公式:=SUMIF(A12:E20,3,A2:E10)
过程视频:
对于熟练掌握了这个函数的人来说,用起来也不难。但对多数人来说,这个函数不好理解,容易出错。因为宏表函数只能通过设置公式而不能直接在单元格使用,而且公式对引用的目标单元格在单元格公式里无法直接看到,和一般函数用法习惯不同,增大了理解掌握的难度,很多人都觉得太复杂,不喜欢用。
升级用法:自定义函数heji(range,range,n,k)
处理数据,简单才是硬道理。今天给大家分享一个自定义函数,专门针对根据单元格格式(填充色、字体色)统计汇总数据。只需提前导入文末提供的代码,就能在单元格直接使用,不需辅助数据。而且同一个函数只需修改一下参数,就可实现计数、累计两种功能。来一起看看。
使用本自定义函数实现上面宏表函数实现的涂红色数据计数、汇总功能,公式很简单:
统计个数:heji(A2:E10,A2,1,1)
数据汇总:heji(A2:E10,A2,1,2)
来看看参数用法说明,函数共有4个参数,分别为:
第一个参数A2:E10:要统计的数据区域;
第二个参数A2:指定目标条件单元格。
第三个参数:可选1或者2。1:根据目标单元格填充色进行统计。2:根据目标单元格字体颜色进行统计。可扩展,增加3、4.....。
第四个参数:可选1或者2。1:计数统计。2:数据累加汇总。可扩展。
知道了函数的用法,我们来看一下实际使用效果。
1、想统计填充色为黄色的个数和汇总数,只需将公式中的第二个参数修改为B2即可,因为B2填充色就是黄色,当然第二个参数也可改为C2或D2都行。
2、想统计字体为红色的个数和汇总数,将第2个参数修改为数据区域中的想统计的字体颜色的某个单元格,再将第三个参数改为2即可。
总结
自定义函数heji()的优点:
1、解决了宏表函数不能直接在单元格使用的不足,将公式变得直观,容易理解掌握。
2、设置目标单元格参数,将公式功能调整变得很方便灵活。
3、设置第三、四个参数,实现一个函数完成不同的任务,而且还可扩展实现更多功能。
完整代码
打开代码编辑器,插入模块,在模块里粘贴下面的代码,就可以在表格里使用该函数了。
Public Function heji(rg As Range, rg1 As Range, k1 As Integer, k As Integer)
Dim di()
n = rg.Rows.Count
m = rg.Columns.Count
n1 = 0: n2 = 0
For i = 1 To n
For j = 1 To m
If k1 = 1 Then
If Cells(rg.Row + i - 1, rg.Column + j - 1).Interior.Color = rg1.Interior.Color Then
n1 = n1 + 1
n2 = n2 + Cells(rg.Row + i - 1, rg.Column + j - 1).Value
End If
ElseIf k1 = 2 Then
If Cells(rg.Row + i - 1, rg.Column + j - 1).Font.Color = rg1.Font.Color Then
n1 = n1 + 1
n2 = n2 + Cells(rg.Row + i - 1, rg.Column + j - 1).Value
End If
End If
Next
Next
Select Case k
Case 1
heji = n1
Case 2
heji = n2
End Select
End Function
猜你喜欢
- 2024-09-18 七牛对象存储(七牛对象存储价格)
- 2024-09-18 PHP 10个最具影响力的新功能(php 10个最具影响力的新功能有哪些)
- 2024-09-18 隐藏在一段文字中的数值,我让你无所遁形
- 2024-09-18 数字大写转换烦,内置格式多缺陷, VBA函数来解难
- 2024-09-18 Excel VBA 新手学习笔记 字典基础导论
- 2024-09-18 面试常见的四种算法思想,全在这里了
- 2024-09-18 Spring Cloud Function 快速入门(spring cloud讲解)
- 2024-09-18 ExcelStat特殊函数计算(2):不完全伽马函数
- 2024-09-18 你加班 1 小时做表格,我用VBA只需30秒钟,直接粘贴拿去用吧
- 2024-09-18 设计模式之装饰器模式(装饰器模式实现)
- 1512℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 556℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 505℃MySQL service启动脚本浅析(r12笔记第59天)
- 483℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 482℃启用MySQL查询缓存(mysql8.0查询缓存)
- 462℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 442℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 439℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)