网站首页 > 技术教程 正文
前两天,在网上搜索SUMIF,无意中看到了这个SUMIF用法,支持正则,自己看了看,苹果的,再看看好像也不是MAC版本的,好吧!其他表格软件的,那么Excel能否支持呢?能,睡不着,要不我们一起也写一个吧!
实现这样的一个自定义函数,并没有什么难度,只要引入正则,加循环判断即可!我们随手写一下即可!
5分钟左右写完收工,我们做一些测试看看效果
▍案例1:对姓名3个字的人员数据求和
这里的“.” 就是正则中的非换行符之外的任意单个字符,{3}表示3个
=EJSUMIF(A1:A16,".{3}",B1:B16)
这或许普通函数也能搞定,并没有什么难的,因为SUMIF本身也是支持通配符,我们加点难度!
▍案例2:对特定项目求和
?需求说明:对项目编码是2位大写字母+4或者5位数字组成的对应的数据求和
=EJSUMIF(A1:A11,"[A-Z]{2}\d{4,5}(?!\d)",B1:B11)
▍案例3:杂乱日期汇总
这个稍微复杂点,说白了第二参数就专门为正则打造的!
=EJSUMIF(A1:A5,".*?[./年\-](6|06)[./月\-].+?",B1:B5)
今天半夜失眠,写的比较随意没有做优化,后面还可以改改,把SUMIF本身的功能也加上,再做一些速度优化,因为就比较完美了!
▍原码分享
随手写可用,尚可优化完善!
Option Explicit
'功能:正则版本-SUMIF
'作者:E精精
'时间:20230524
'-------------------------------
Function EJSUMIF(cr_range, _
reStr As String, rs_range)
Dim re As Object, rs As Long, i As LongSUM cr_range = Application.Intersect(cr_range, _
cr_range.Parent.UsedRange).Value
rs_range = Application.Intersect(rs_range, _
rs_range.Parent.UsedRange).Value
Set re = CreateObject("vbscript.regexp")
With re
.Global = True
.Pattern = reStr
For i = 1 To UBound(cr_range)
If .test(cr_range(i, 1)) Then
rs = rs + rs_range(i, 1)
End If
Next
End With
EJSUMIF = rs
End Function
目前,其实已经写了好几个比较好用的多功能增强函数,未来可能会发布EJ函数库,考虑智能提示问题,需要使用ExcelDNA重写,由于最近在更新学习圈的系列教程,一直没时间……
关于正则的学习,欢迎加入学习圈,系列教程以比较完善且有答疑!
今天的内容就到这里,快去试试吧,任何函数加上正则表达式就有无尽可能!
猜你喜欢
- 2024-10-17 REGEXP函数,基础用法请收好(regexp_replace函数的用法)
- 2024-10-17 Excel VBA入门教程 1.7 正则表达式
- 2024-10-17 一篇文章从了解到入门shell(shell 入门)
- 2024-10-17 正则匹配MAC地址(匹配ip正则)
- 2024-10-17 一坨一坨 if/else 参数校验,被 SpringBoot 参数校验组件整干净了
- 2024-10-17 每天三分钟搞定linux shell脚本10 字符串相关的if判断
- 2024-10-17 正则表达式真的很强大,可惜你不会写
- 2024-10-17 点赞收藏:PyTorch常用代码段整理合集
- 2024-10-17 绝对干货python正则,理论加实践(python 正则 \s)
- 2024-10-17 Linux 脚本 if判断详解(linux脚本if语句)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)