我需要创建一个公式,计算 I 列中逾期日期的次数,其中 J 列中对应的单元格为空白。
我在 H 列(指定日期)输入日期。有一个公式可以自动填充 I 列(到期日期),即:
=IF(ISBLANK(H6), " ", EDATE(H6,6))
我需要创建一个公式来计算 I 列中早于今天的日期数,但前提是 J 列中相应的单元格为空白。
我努力了:
=COUNTIFS(I6:I260,"<TODAY()",J6:J260,"<>"&"""")
但我怀疑它正在计算第 I 列的自动填充公式。
答案1
答案2
你犯了两个错误:
当您说 时
"<TODAY()"
,您正在将 列 中的值I
与细绳TODAY()
。例如,如果你将星期几放入列中I
作为字符串, 那么Monday
,Thursday
、Friday
、Saturday
和Sunday
将被视为<
TODAY()
,但Tuesday
和 则Wednesday
不会。但是,没有实际日期值将被视为<
TODAY()
。- 通常(例如,如果您这样做
IF(D1<S1,…)
),所有日期都被认为小于所有字符串。但是,出于目的COUNTIF
,日期不被视为小于、大于或等于字符串。它们只是不被计算在内。这似乎没有记录。 - 列中的值
I
是通过公式计算的,这不是问题。
您需要说
"<"&TODAY()
才能获得今天日期的值。- 通常(例如,如果您这样做
当字符串常量中连续出现两个双引号时,它们的作用相当于一个双引号字符。这很令人困惑。例如,如果您
"foo""bar"
在公式中说,则其计算结果为字符串值foo"bar
。按照同样的规则,如果您""""
在公式中说,则其计算结果为字符串值"
,而当您说时"<>"&""""
,其计算结果为<>"
,因此您正在将 Column 中的值J
与 进行比较"
。要检查值是否不为空,您需要说
"<>"&""
,或者简单地说"<>"
,这非常不直观。- A 轻微地更清晰的语法是
=*
,它测试值是否为非空字符串。但是,<>
将计算所有非空单元格,而=*
不会计算包含数字或日期的单元格。由于您没有说明 Column 中的内容J
,我不知道这对您是否有用。
- A 轻微地更清晰的语法是
所以你想要的公式是
=COUNTIFS(I6:I20,"<"&TODAY(), J6:J20,"<>")
请注意,这是不是数组公式,因此做不是需要Ctrl++ Shift。Enter
例如:
- 第 6 行计算在内,因为
I6
(2019 年 2 月 11 日) 小于今天 (2019 年 2 月 19 日) 并且J6
(foo
) 不为空。 - 第 7-9 行不算数,因为它们在列中是空白的
J
。 - 第 10 行不算数,因为
I10
是空白。(第 15-20 行也是如此。) - 第 11 行和第 12 行不计算在内,因为
I11
(2019 年 2 月 25 日) 和I12
(2019 年 2 月 26 日) 大于今天的日期。 - 第 13 行和第 14 行,因为第 13 列中的日期
I
是未来的日期 和在 列 中它们是空白的J
。