分享

Excel自定义函数-数量明细

 L罗乐 2017-11-15

大家都知道,Excel除了有丰富的菜单功能,还有强大的各种函数,通过各种函数的嵌套可以解决工作中遇到的大部分问题。除了Excel自带的函数,我们还可以根据实际需求随心所欲地写出一些自定义函数,如本次将要介绍的自定义函数-数量明细。

功能:列出某个产品名称从上到下出现对应数量,中间用逗号连接,出现次数不确定。

自定义函数必须放在开发工具中的模块并启用宏,源代码与注解如下:

Public Function ShowNum(RngsAs Range, Rng As Range)

        '定义数组变量

        Dim Arr As Variant

        '把Rngs单元格区域装入数组

        Arr = Rngs.Value

        '如果Rngs单元格区域列数不等于2,就返回提示'第一个参数只支持两列。'并结束运行函数。

        If Rngs.Columns.Count <> 2 ThenShowNum = '第一个参数只支持两列。': Exit Function

        '如果Rngs单元格区域行数等于1,就直接返回单元格区域第二个单元格的值并结束运行函数。

        If Rngs.Rows.Count = 1 Then ShowNum =Rngs(2).Value: Exit Function

        '如果Rng单元格不是单个单元格,就返回提示' 第二个参数只支持单个单元格。'并结束运行函数。

        If Rng.Cells.Count <> 1 ThenShowNum = ShowNum & ' 第二个参数只支持单个单元格。': Exit Function

        '定义以下循环需要的临时变量i,Nam,对象d

        Dim i As Long, Nam As String, d AsObject

        '创建字典对象并赋值给对象d

        Set d =CreateObject('scripting.dictionary')

        '把Rng单元格赋值给变量Nam

        Nam = Rng.Value

        '循环把数组第1列和第2列装入字典,并把同类项对象数量用逗号连接

        For i = 1 To UBound(Arr)

                d(Arr(i, 1)) = d(Arr(i, 1))& ',' & Arr(i, 2)

        Next i

        '取出与Rng单元格值相同对象的连接字符,由于第1次赋值d(Arr(i, 1)) 为空,前面会多一个逗号,所以结果要从第2个字符开始截取。

        ShowNum = Mid(d(Nam), 2, Len(d(Nam)))

End Function

 

使用示例请看以下动画:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多