vba - excel中如何统计不同字体颜色的文本

标签 vba excel worksheet-function

我有一个姓名列表,已从另一个数据库导出到 Excel 中。列表中感兴趣的名称以红色字体突出显示。我想要一种计算方法,即 John Smith 在一栏中总共出现 5 次,但 5 次中的 3 次,他的名字以红色字体突出显示。所以我想看看有多少个他的名字出现红色。

我知道如何搜索他名字的所有实例,例如=COUNTIF(A1:A100,"约翰·史密斯")

我还获得了帮助,创建了一个 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

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

最佳答案

您不需要 VBA,但如果您需要 VBA 解决方案,那么您可以选择其他两个答案中的任何一个。 :)

我们可以使用Excel公式来查找单元格的字体颜色。请参阅此示例。

我们将使用 XL4 宏。

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

enter image description here

公式解释

语法是

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)并将其复制下来。

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

屏幕截图

enter image description here

编辑(2013 年 10 月 12 日)

要对具有特定背景颜色的单元格进行计数,请参阅 THIS链接

关于vba - excel中如何统计不同字体颜色的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15887257/

相关文章:

vba - 如何在 Excel 中实现可重置、可覆盖的默认单元格值?

vba - 单步执行 Google Apps 脚本中的代码(相当于 VBA-GAS)

vba - 将 *.xlsm 文件另存为 *.xlsx 并抑制弹出窗口

vba - 选择 A 列中最后使用的单元格,然后将其扩展到 H 列

excel - 查看剪贴板内容

vba - 在 VBA/VBS 中退出 while 循环

excel - 当上面的单元格具有相同的值时,单元格的条件格式

vba - 美国和英国设置之间奇怪的日期过滤器行为 : VBA

java - 从excel中读取图像并将其存储在sql server中

c# - Excel 电子表格中缺少列