该countif
函数有一个条件参数——如何根据单元格格式指定条件?
我有一份数学家庭作业问题列表,其中包含每页的问题编号(例如,第 12 页的行将包含数字 17 到 32,每个数字都在自己的单元格中),我想使用格式标记特殊含义:难题将以粗体显示,必答题将有黄色背景,当然,包含难题和必答题编号的单元格将以粗体显示,背景为黄色。
现在我想统计一下问题和它们的类别:假设这一页上有 16 个问题,其中 5 个很难但可选,3 个是必修的但很容易,2 个是必修的并且很难?
当然,我可以每页添加三行:一行用作“困难”标志,一行用作“强制”标志。如果同时启用了“困难”和“强制”标志,则第三行将是 1。但我希望 Excel 工作表看起来赏心悦目,没有这种混乱,而每页作业添加三行既丑陋又不直观。
谢谢!Avi
PS 解决这个问题的替代方法会很棒。也许我找错了方向。
答案1
据我所知,计数仅接受单元格引用、数字、字符串和通配符(任何与单元格内的值有关的内容,而不是格式)。不过,您可以尝试以下几种方法。
选项 1:数据过滤和小计
您可以使用数据过滤器随着小计,如下例所示。但是,这只适用于背景颜色,而不适用于字体粗细。对于难题,您可以使用黄色和红色的色调,而不是使用粗体字体。缺点是,每次想要计算问题数量时,您都必须手动应用过滤器。
选项 2:自定义函数
Public Function COUNTF(w As Boolean, h As Boolean, rng As Range) As Integer
Dim cHard, cMand, cBoth As Integer
For Each c In rng
If c.Font.Bold Then cHard = cHard + 1
If c.Interior.Color = RGB(255, 255, 0) Then cMand = cMand + 1
If c.Font.Bold And c.Interior.Color = RGB(255, 255, 0) Then cBoth = cBoth + 1
Next c
If w And Not (h) Then
COUNTF = cHard
ElseIf Not (w) And h Then
COUNTF = cMand
ElseIf w And h Then
COUNTF = cBoth
Else
COUNTF = rng.Count - (cHard + cMand - cBoth)
End If
End Function
使用方法:
=COUNTF(a, b, B5:B13)
在哪里:
a
&b
可以是TRUE
或FALSE
(1
或0
)
B5:B13
包含问题
例子:
计算所有难题:=COUNTF(1, 0, questions)
计算所有必答题:=COUNTF(0, 1, questions)
计算非必答难题: =COUNTF(1, 0, questions)-COUNTF(1, 1, questions)