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宏.
FontColor=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)
要计算具有特定背景色的单元格,请参阅此链接
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)