【问题标题】:Counting Colored Cells from a Conditional Formatting statement从条件格式语句计算彩色单元格
【发布时间】:2015-10-15 15:23:52
【问题描述】:

所以我从昨天开始重新审视这个:

Multi-column vlookup conditional formatting

使用 Scott Holtzman 提供的条件格式语句,一切都按预期工作(感谢 Scott!)。现在我遇到了一个小问题。我需要根据背景颜色计算单个单元格并将其显示在另一张纸上。我发现了这个:

https://www.ablebits.com/office-addins-blog/2013/12/12/count-sort-by-color-excel/

VBA 脚本可以很好地计算我手动填充的单元格...但它没有计算条件格式化函数填充的单元格。任何人都知道如何解决这个小问题?与往常一样,任何能够提供任何见解的人都会受到赞赏! :)

【问题讨论】:

  • 正如您所发现的,条件格式与视觉显示之外的任何内容的格式都不相同。如果你想计算这些单元格,你需要做一些事情,比如有另一个列来检查是否满足原始条件格式条件,然后显示为“1”,然后计算所有这些 1。还有其他方法,但所有方法都涉及查看原始单元格中值的公式,而不是这些单元格的格式。
  • 因此,如果条件格式的 vlookup 为真,那么我必须在工作表中设置一个 if 语句以生成“1”,然后计算 1 的数量?例如,if(vlookup function, 1, "") ??
  • 您要退后一步,根据最初赋予这些单元格颜色的条件数数如何?
  • 您可以使用DisplayFormat 来确定单元格中显示的颜色,但是: 1. 您至少需要Excel 2010;和 2. 你不能在 UDF 中使用它,所以你需要一个宏或事件代码。
  • 如果您使用 Scott 展示的第二种方法,即 I、J 和 K 列中包含单词的方法。那么您可以在这些单元格上使用两个 countif() 语句。

标签: vba excel conditional-formatting countif


【解决方案1】:

不幸的是,没有直接的方法/VBA 方法或属性可以给出应用了条件格式的单元格的颜色。如您所知,您的默认/手动填充颜色将被条件格式覆盖。在条件格式方面,一个单元格可以应用多个条件,这意味着该单元格可以使用多种颜色,这是非常动态的。

cColor= rng.FormatConditions(1).Interior.ColorIndex ' Color of formula 1 if true
cColor= rng.FormatConditions(2).Interior.ColorIndex ' Color of formula 2 if true
cColor= rng.FormatConditions(3).Interior.ColorIndex ' Color of formula 3 if true

此外,这些格式条件对象设置了优先级值,因此可以根据优先级覆盖它们。您可以遍历应用于单元格的所有条件并查找每个公式的颜色,

    For i = 1 To rng.FormatConditions.Count
        cColor = rng.FormatConditions(i).Interior.ColorIndex ' Color of formula i
    Next i

但是,这仅给出了分配给每个条件的颜色,如何获取应用这些条件的单元格的当前颜色。您必须使用单元格值手动评估条件,以确定单元格的条件是返回真还是假,然后获取相同的颜色。

似乎很难,不是吗?但是,最好用可以帮助您获得所需内容的代码来解释这一点。请参考以下链接,

Get Displayed Cell Color (whether from Conditional Formatting or not)

Conditional Formatting Colors

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    相关资源
    最近更新 更多