数组的一个应用

ABC
1时间人员销售金额
212甲、乙、丙100,200,300
315丁、戊、己300,500,600
416庚、辛、乙900,700,500
517丁、戊、甲400,200,100
618乙、丙、己200,200,200
719丁、辛、乙300,400,800

我想统计乙这些天的销售金额总计,怎么办?

设置公式

'声明函数Statistics,类型为Long型。包扩两个必选参数,第一个为数据区域,区域中包括待计算的对象名称和对应的数据,第一个为计算对象。

Function Statistics(Data As Range, Object As Range) As Long

Application.Volatile

Dim arr() As String, arr2() As String

For j = 1 To Data.Rows.Count

arr = Split(Data.Rows(j).Cells(1), "")

arr2 = Split(Data.Rows(j).Cells(2), ",")

For i = 0 To UBound(arr)

If Object = arr(i) Then Statistics = Statistics + arr2(i): Exit For

Next

Next

End Function

d15单元格输入“乙”,在e15单元格输入“=Statistics(C3:D8,D15)”。

E15=1700

来研究这个函数split

返回一个下标从零开始的一维数组,它包含指定数目的子字符串。用法:

传回数组 = Split(原始字串, 要找的字串, 拆成几个数组)

默认返回一维数组,以指定字符分割,

T=split("F: aa.txt","")

则:T(0)="F:";T(1)="a";T(2)="a.txt" ;T(UBound(T))=a.txt

我们对自定义函数做一些注解:

Function Statistics(Data As Range, Object As Range) As Long

Application.Volatile '声明为易失性函数

Dim arr() As String, arr2() As String '声明两个数组

For j = 1 To Data.Rows.Count '遍历数据区域第一列

arr = Split(Data.Rows(j).Cells(1), "") '将数据区域第一列的单元格转换成数组并赋予数组arr

arr2 = Split(Data.Rows(j).Cells(2), ",") '将数据区域第二列的单元格转换成数组并赋予数组arr2

For i = 0 To UBound(arr) '将单元格转换成数组,然后遍历数组的每一个元素

'如果计算对象等数组arr的某个值,那么将数组arr2中对应的值累加到函数的返回值中

If Object = arr(i) Then Statistics = Statistics + arr2(i): Exit For

Next

Next

End Function

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24345566/viewspace-1053550/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24345566/viewspace-1053550/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值