Excel VBA自定义函数对数据区域按单元格颜色或者字体颜色汇总

时间:2017-10-30   作者:snow   来源:Office之家

应用场景

自定义函数,对数据区域按单元格颜色或者字体颜色汇总

知识要点

1:Function函数过程,4个参数,第一个参数为Range对象、参照条件,第二参数为Range对象、求和区域对象

2:第三个参数 Boolean对象、求和OR计数,第四个参数Boolean对象、按单元格颜色OR字体颜色,Ture也可以简写为1或其他数字,0或者空缺代表False

3:Optional 声明变量,表示参数不是必需的。

4:Application.Volatile 方法 用于将用户自定义函数标记为易失性函数,无论何时在工作表的任意单元格中进行计算时,易失性函数都必须重新进行计算

Function Color(参照颜色区 As Range, 统计区 As Range, Optional SumorCount As Boolean = False, Optional BackOrFont As Boolean = False)

    Application.Volatile 'application.volatile方法,用于将用户自定义函数标记为易失性函数,无论何时在工作表的任意单元格中进行计算,易失性函数

                         '都必须重新进行计算。非易失性函数只有在输入变量改变时才重新计算,若不用于计算工作表单元格的自定义函数中,则次方法无效

    Dim Cell As Range, Colors, Sum, i

    '如果第四参数是true则背景色求和,否则按字体颜色求和

    Colors = IIf(BackOrFont, 参照颜色区(1).Interior.Color, 参照颜色区(1).Font.Color)

    For Each Cell In 统计区  '遍历求和区

    If BackOrFont Then

        '背景色相同则累加数值及计数器

        If Cell.Interior.Color = Colors Then

            Sum = Sum + IIf(IsNumber(Cell), Cell, 0)

            i = i + 1

        End If

    Else

            '字体色相同则累加数值及计数器

        If Cell.Font.Color = Colors Then

            Sum = Sum + IIf(IsNumber(Cell), Cell, 0)

            i = i + 1

        End If

    End If

    Next Cell

    Color = IIf(SumorCount, Sum, i) '将合计数赋予函数

End Function

tag : 颜色   汇总
发表评论