Excel本身没有获取字体或填充颜色的函数,实际工作当中经常会碰到这类难题,想根据获取颜色来判断一些条件,可全网都搜不到用哪个函数来解决,这已然成了Excel疑难杂症。

其实笔者从网上也搜到一种解决方法,那就是宏表函数GET.CELL,可以获取单元格字体颜色或填充颜色,需要把函数放在名称管理器中先定义,然后再使用,局限性不能更新,当然这个可以在后面加上“ now()*0”易失性函数,总之能够解决一些用户的需求,比如按颜色求和或计数等,有兴趣的朋友可以网上搜一下,这里就不卖书包了。

我要给大家分享的是VBA自定义函数,功能更强大,下面拿一个实际工作案例来详细说明。

Excel自定义函数:百变的获取颜色VBA函数,填补无颜色函数空白-趣帮office教程网

这是一份计划部门的排产表,交给生产执行,要求生产做完一道工序填充绿色,正在加工填充蓝色,生产部门希望填充颜色后当前工序自动显示出来,方便筛选当前工序的产品生产任务,那么该如何实现呢?

第一步,【开发工具】选项卡下【Visual Basic】进入代码编辑器,插入一个新模块,然后把以下代码复制粘贴过来。

Function ColorCheck(a As Range)
Application.Calculation = xlAutomatic '设置为自动重算
Dim i As Range '按填充颜色查找的单元格区域
Dim k As Integer   '统计有填充颜色单元格个数
Dim temp As String '临时变量存放最后一个有填充颜色单元格对应工序名称
For Each i In a    '遍历循环
If Not i.Interior.ColorIndex = xlNone Then  '判断是否有填充颜色
temp = Cells(2, i.Column)  '把当前填充颜色单元格对应工序名称赋值给temp
k = k   1
End If
Next
If k > 0 Then
ColorCheck = temp  '如果k大于零,则有填充颜色,返回最后一个工序名称
Else
ColorCheck = ""     '如果k等于零,则返回空字符
End If
End Function

第二步,引用VBA定义函数ColorCheck,在J3单元格输入公式:"=ColorCheck(F3:I3)",显示结果如下图。

Excel自定义函数:百变的获取颜色VBA函数,填补无颜色函数空白-趣帮office教程网

延申思考:这个自定义函数可以根据实际需要改变以下遍历循环部分内容,会返回不同的值,举个例子,假如我需要获取末序填充颜色,只需调整一行代码而已。

 把“temp = Cells(2, i.Column)  '把当前填充颜色单元格对应工序名称赋值给temp”
改成“temp = i.Interior.ColorIndex    '获取单元格的填充颜色”
把函数名改下,这里改为ColorCheck1

Excel自定义函数:百变的获取颜色VBA函数,填补无颜色函数空白-趣帮office教程网

当然要获取字体颜色也是可以的,换成“temp = i.Font.ColorIndex '获取单元格的字体颜色”就可以了,是不是非常简单,快速修改,百变功能。