如何在excel中计算不同字体颜色的文本

Ton*_*fah 8 excel vba worksheet-function excel-vba

我有一个从另一个数据库导出到excel的名称列表.列表中感兴趣的名称以红色字体突出显示.我想要一种计算它的方法,即约翰史密斯在一列中总共出现5次,但在5次中出现3次,他的名字以红色字体突出显示.所以我想看看他的名字有多少个实例出现红色.

我知道如何搜索他名字的所有实例,例如= COUNTIF(A1:A100,"John Smith")

我还帮助创建了一个VB函数,它通过使用这个来计算工作表中所有红色值(= SumRed)(一旦指定了颜色索引):

Function SumRed(MyRange As Range)
    SumRed = 0
For Each cell In MyRange
    If cell.Font.Color = 255 Then
        SumRed = SumRed + cell.Value
    End If
Next cell
End Function
Run Code Online (Sandbox Code Playgroud)

我只是找不到结合两种计数条件的方法.任何帮助将非常感激!

Sid*_*out 16

你不需要VBA,但如果你想要VBA解决方案,那么你可以选择其他两个答案.:)

我们可以使用Excel公式来查找单元格的字体颜色.看这个例子.

我们将使用XL4宏.

  1. 打开名称管理器
  2. 给个名字.说FontColor
  3. 在"引用到"中键入此公式,=GET.CELL(24,OFFSET(INDIRECT("RC",FALSE),0,-1))然后单击"确定"

在此输入图像描述

公式的解释

语法是

GET.CELL(type_num, reference)

Type_num is a number that specifies what type of cell information you want.
reference is the cell reference
Run Code Online (Sandbox Code Playgroud)

在上面的公式中,数字24为您提供单元格中第一个字符的字体颜色,作为1到56范围内的数字.如果字体颜色是自动的,则返回0. 因此缺点.确保整个字体颜色为红色.我们本可以使用64但这不能正常工作.

OFFSET(INDIRECT("RC",FALSE),0,-1) 是指左边的直接单元格.

现在在单元格中输入此公式=IF(AND(Fontcolor=3,B1="John Smith"),1,0)并将其复制下来.

注意:必须在包含文本的单元格的右侧输入公式.

Screentshot

在此输入图像描述

编辑(10/12/2013)

要计算具有特定背景色的单元格,请参阅链接


use*_*261 0

For Each cell In Range("A1:A100")
    If cell.Font.Color = 255 And cell.Value = "John Smith" Then
        myCount = myCount + 1
    End If
Next
Run Code Online (Sandbox Code Playgroud)