techtheatre Asked: 2019-07-17 13:10:07 +0800 CST2019-07-17 13:10:07 +0800 CST 2019-07-17 13:10:07 +0800 CST 范围内重复模式的条件格式单元格组 - 将日历上的旧日期显示为灰色 772 我在 Excel 中制作了一个日历,每天有 2 个单元格宽和 9 个单元格高。第一个单元格(左上角)包含日期。示例单元格可能是从 A2 到 B10 的范围,日期在 A2 中。这种模式重复 7 组(14 列)和无限数量的行,提供无限的日历。 一旦日期过去,我想应用条件格式将整个“日组”变灰。我知道我可以通过应用将日期(组中左上角的单元格)变灰,A2<TODAY() 但我想将格式应用于该单元格以及右侧和下方的单元格(9x2 的整个范围)...然后将规则应用于我的整个日历。有没有办法提供条件适用的分组定义? microsoft-excel worksheet-function 1 个回答 Voted Best Answer JvdV 2019-07-17T13:41:22+08:002019-07-17T13:41:22+08:00 根据假设,日期是自定义格式的实际日期,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()which 将返回,在这种情况下,除法后两个数字的余数的整数。例如单元格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()。过去的任何内容都符合我们的规则并具有条件格式。 希望这是有道理的:)
根据假设,日期是自定义格式的实际日期,
d
您可以执行以下操作:A1:N37
新的条件格式规则:
应用格式并确认。结果如下。
当心,这是易变的(因为所有自定义格式都是易变的,根据@teylyn 她的评论),但由于看起来您的工作表无论如何都不会大量计算,所以您应该没问题。
你问我,这是如何工作的?我们将不得不把它分成几部分:
OFFSET
函数将从一个单元格中返回值,该单元格与引用的单元格有 N 行和 N 列的偏移量。这是我们这里的主要功能。OFFSET
需要一个您想要实际偏移的参考地址。我使用ADDRESS
了函数,它应该返回一个地址。ADDRESS
至少需要一行和一列,我们用ROW()
和给出了公式COLUMN()
,它们都查看其当前单元格的行和列(在条件格式中有意义,因为公式将适用于所有单元格)。其余参数是可选的,我们可以将它们省略。INDIRECT()
用来实际返回有效地址。OFFSET
函数的第二个重要部分是为其提供一个行号以进行偏移。我使用MOD()
which 将返回,在这种情况下,除法后两个数字的余数的整数。例如单元格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()
。过去的任何内容都符合我们的规则并具有条件格式。希望这是有道理的:)