8

我有一个已从另一个数据库导出到 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

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

4

3 回答 3

18

您不需要 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

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

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

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

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

截图

在此处输入图像描述

编辑(2013 年 10 月 12 日)

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

于 2013-04-08T20:41:20.840 回答
2

我想你快到了,但这值得@user 打赌我的妙语:(

Function CoundRedAndText(MyRange As Range, Mytext as string) as long
    CoundRedAndText = 0
    For Each cell In MyRange
        If cell.Font.Color = 255 and cell.value like MyText Then
            CoundRedAndText = CoundRedAndText + 1 'you had cell.value but dont know why?
        End If
    Next cell
End Function

用法,=CountRedAndText(A1:A25, "John Smith")

于 2013-04-08T19:44:26.133 回答
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
于 2013-04-08T19:39:26.287 回答