【问题标题】:How can I simplify my conditional formatting如何简化条件格式
【发布时间】:2021-05-25 11:55:37
【问题描述】:

我的电子表格有 30 多个条件格式规则,我想知道是否可以将它们组合起来。

我附上图片来提供一个想法,但基本上,用户可以通过设置开始/结束日期并选择政策来设置/更改右侧的取消政策 (BC9:BF18)。

然后我使用条件格式来使用此信息为日历着色(日历的每个单元格都设置为其实际日期,因此蓝色的 6 月 1 日单元格实际上包含 01/June/2021,但格式化为仅显示 1)。对于 BC9:BF18 表的每一行,我都有以下规则(例如,对于第一行 [9]):

=AND(E9>=$BC$9,E9<=$BE$9,$BF$9="High") - Change to blue
=AND(E9>=$BC$9,E9<=$BE$9,$BF$9="Standard") - Change to white
=AND(E9>=$BC$9,E9<=$BE$9,$BF$9="Peak") - Change to red
=AND(E9>=$BC$9,E9<=$BE$9,$BF$9) - Change to a set color

10 行 (BC9:BC18) 中的每一行都有 4 条规则,因此有 40 种不同的条件格式。

我现在想补充一点,如果这一天是假期(假期日期将在下表中,比如说 BC30:BC60),那么将字体设置为红色,但保持背景颜色与取消一致政策。

这将需要加载和加载更多的条件格式规则,这些规则需要超越所有旧规则,例如。 =AND(E9&gt;=$BC$9,E9&lt;=$BE$9,$BF$9="High",[OR(E9=$BC$30, E9=$BC$31....)] - Change to blue with red font,有没有人能找到简化这个的方法?

我有一些建议,但我不确定它们是否可行:

(a) 更改顺序以便结束日期无关紧要,下一个公式将覆盖其开始日期

(b) 检查与“高”匹配的所有策略(因此 if(BF9:BF18='High'... 以某种方式获取该开始/结束日期等。

(c) 对于新位(检查日期是否在表 BC30:BC60 中),必须有比检查日期是否匹配 BC30 然后 BC31 然后 BC32 更简单的方法 `=OR(E9=$BC$30,E9 =$BC$31,E9=$BC$32 等

【问题讨论】:

  • 如果任何日期和月份名称与您的假期表匹配,为什么不添加条件格式,然后是红色前面。所以你不必重新调整所有代码?
  • 是的,但这会否决背景颜色的变化,因此您可以看到这是一个假期,但您无法看到正在使用的取消政策。
  • 是的,太糟糕了,它会覆盖。写应用脚本来制定字体颜色会更好,这是您考虑的一部分吗?
  • 是的,我尝试过在使用 app-script 更改与假日日期匹配的每个单元格的边框颜色之前,它需要大量编码,因为它需要找到每个日期的单元格引用匹配假日日期,然后循环并更改边界。问题是我想在单独的月表上显示这些日历中的每一个,所以我需要在每个页面上运行所有脚本!
  • 您只需要总共八个规则。共享指向电子表格副本的链接,确保将链接的共享权限(创建链接时)设置为“知道链接的任何人...”和“编辑者”。然后在下方评论您已完成此操作,我将尝试转圈并在电子表格中以副本的形式分享它们。

标签: if-statement google-sheets logic conditional-formatting


【解决方案1】:

要避免选择“c”,您可以使用MATCH 函数。创建一个条件规则,适用于您希望字体颜色为红色的所有范围(如果假日)。

示例:

假设您的假期列表在A2:A 范围内,并且您检查的日期在C2 范围内,那么自定义条件公式将是:

=match(C2, A1:A)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多