VBA应用笔记1——split函数+数据+自定函数
1、案例说明:
(1),需要处理的内容格式如下:
| 序号 | 总支出明细 |
| 1 | 餐饮:65.00,加油:1000.00,餐饮:90.00,加油:1000.00,ETC:800.00 |
| 2 | 加油:1000.00,ETC:95.00,ETC:92.00,餐饮:40.00,ETC:28.50,餐饮:20.00,ETC:69.30,餐饮:40.00,停车费:15.00,ETC:102.55,餐饮:20.00,ETC:219.00,ETC:110.00,餐饮:40.00,加油:1000.00,ETC:185.00,加油:1000.00,尿素:224.00,ETC:92.64,餐饮:28.00,保养:40.00,ETC:102.00,加油:1000.00,ETC:123.00,ETC:487.00,餐饮:38.00,加油:1000.00,餐饮:94.00,餐饮:10.00,维修:100.00,加油:1500.00 |
(2),处理要求:计算 “ 总支出明细” 列不同项目费用合计,也就是统计每行餐饮费、加油、ETC等格式多少。
2、处理思路:
(1),通过自定义函数,本例中自定义函数名为cal,自定义函数方便实现代码重用。
3、VBA代码:
Function cal(tar As Range, des As Range) Dim j arr = Split(tar.Value, ",") 'tar为统计单元格 For j = LBound(arr) To UBound(arr) If InStr(arr(j), des.Value) <> 0 Then 'des为需要统计的项目,如加油,餐饮,ETC等 cal = cal + Val(Split(arr(j), ":")(1)) End If Next End Function
4、其他补充:
(1),为了是函数在使用的时候,显示参数提示,可以通过运行一遍下面的代码来实现。
(2),但是下面的代码只能在通过 “插入函数” 的方式才能显示,通过 “ =” 等号后输入函数名的方式没能体现,琢磨了很长时间,也没能实现该功能,学习到这方面的知识的时候再弄吧。
Sub 添加参数说明() Dim argsname As String '函数名称 Dim argsdes As String '函数描述 Dim argsclass As String '函数类别 Dim argsarray(0 To 1) As String '函数参数描述 数组 个数 argsname = "cal" argsdes = "统计特定项目费用合计" argsclass = "自定义测试函数" argsarray(0) = "函数第1个参数,被统计的单元格" argsarray(1) = "函数第2个参数,统计项目" Call Application.MacroOptions(Macro:=argsname, Description:=argsdes, Category:=argsclass, ArgumentDescriptions:=argsarray) End Sub
5,案例附件:

浙公网安备 33010602011771号