欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  Office

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

程序员文章站 2022-03-04 16:13:03
应用场景 自定义函数,对数据区域按单元格颜色或者字体颜色汇总 知识要点 1:Function函数过程,4个参数,第一个参数为Range对象、参照条件,第二参数...

应用场景

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

知识要点

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