范围内重复模式的条件格式单元格组 - 日历上的旧日期变灰

范围内重复模式的条件格式单元格组 - 日历上的旧日期变灰

我在 Excel 中制作了一个日历,其中每一天占 2 个单元格宽和 9 个单元格高。第一个单元格(左上角)包含日期。一个示例单元格可能是从 A2 到 B10 的范围,日期位于 A2 中。此模式重复 7 个组(14 列)和无限多的行,从而提供无限的日历。

我想应用条件格式,在日期过去后将整个“日期组”变灰。我知道我可以通过应用将日期(组内的左上角单元格)变灰,A2<TODAY() 但我想将格式应用于该单元格以及右侧和下方的单元格(整个 9x2 范围)...然后将规则应用于我的整个日历。有没有办法提供条件适用的分组定义?

在此处输入图片描述

答案1

假设这些天数是自定义格式的实际日期,d您可以执行以下操作:

  • 就我的情况而言,选择以下范围A1:N37
  • 新的条件格式规则:

    =OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())),-MOD(ROW()-2,9),-MOD(COLUMN()+1,2))<TODAY()
    
  • 应用格式化并确认。结果如下。

在此处输入图片描述

请注意,这是易失性的(因为所有自定义格式都是易失性的,如@teylyn 她的评论所述),但由于看起来你的工作表不会进行大量计算,所以你应该没问题。

你问我,这是如何运作的?我们必须将其分为几个部分:

  • OFFSET函数将返回与引用单元格偏移 N 行和 N 列的单元格的值。这是我们这里的主要功能。
  • OFFSET需要一个实际要偏移的参考地址。我使用了ADDRESS函数,它应该返回一个地址。
  • ADDRESS至少需要一行和一列,我们用ROW()和给出了公式COLUMN(),它们都查看当前单元格的行和列(在条件格式中是有意义的,因为公式将应用于所有单元格)。其余参数是可选的,我们可以省略它们。
  • 我们用来INDIRECT()实际返回有效的地址。
  • 该函数的第二个重要部分OFFSET是向其提供一个用于偏移的行号。我使用了MOD()它将返回两个数字相除后余数的整数。例如单元格C10将返回-MOD(ROW()-2,9)> -MOD(10-2,9)> -MOD(8,9)> -8
  • 我们对列参数使用同样的技巧,-MOD(COLUMN()+1,2)> -MOD(3+1,2)> -MOD(4,2)> -0。请注意,在两个参数中,我们都使用了-创建负偏移量的技巧吗?
  • 上述代码将为每个单元格创建一个偏移量,重定向到其相应的日期。我们只需根据该日期进行评估即可TODAY()。过去的任何内容都将符合我们的规则并具有条件格式。

希望这是有意义的:)

相关内容