【发布时间】:2019-02-13 00:54:53
【问题描述】:
我正在使用 Excel 2013。
我有一个包含三列的表格:Start Date、End Date 和 Holiday - 包含用于检查是否存在公式的列假期介于开始日期和结束日期之间。 开始日期和结束日期列包含对计算日期的其他列的引用。 假期 列中的公式使用Index/Match 函数来查看假期列表(在名为SLA 假期 的单独工作表上)。该表在一周的时间跨度内包含数千条记录,并且每天更新。
假期公式不起作用 - 即使时间范围内有假期,它也会返回 FALSE。在评估公式时,它说AND 函数的第一个逻辑是FALSE;但是,这是真的(2018 年 9 月 3 日 > 2018 年 8 月 31 日)。该公式正确计算了AND 函数的第二个逻辑。
当我用对包含这些日期的表格之外的单元格的引用替换对 开始日期 和 结束日期 的表格引用时,公式可以正常工作。
下面是表格中几条记录的屏幕截图,显示了 3 列。我还包括了一个 HTML 版本的复制能力。公式如下:
{=AND(INDEX('SLA Holidays'!$A$2:$A$7,MATCH(MIN(ABS('SLA Holidays'!$A$2:$A$7-[@[Start Date]])),ABS('SLA Holidays'!$A$2:$A$7-[@[Start Date]]),0))>[@[Start Date]],INDEX('SLA Holidays'!$A$2:$A$7,MATCH(MIN(ABS('SLA Holidays'!$A$2:$A$7-[@[Start Date]])),ABS('SLA Holidays'!$A$2:$A$7-[@[Start Date]]),0))<[@[End Date]])}
Start Date End Date Holiday
08/31/2018 9/4/2018 FALSE
08/31/2018 9/4/2018 FALSE
08/31/2018 9/4/2018 FALSE
当我使用完全相同的公式,但将表引用切换为包含相同日期的单元格引用时,该公式有效。这是更新后的公式:
{=AND(INDEX('SLA Holidays'!$A$2:$A$7,MATCH(MIN(ABS('SLA Holidays'!$A$2:$A$7-AC5)),ABS('SLA Holidays'!$A$2:$A$7-AC5),0))>AC5,INDEX('SLA Holidays'!$A$2:$A$7,MATCH(MIN(ABS('SLA Holidays'!$A$2:$A$7-AC5)),ABS('SLA Holidays'!$A$2:$A$7-AC5),0))<AD5)}
有没有办法使这个公式适用于表格中对日期的引用?
【问题讨论】:
-
欢迎您,@mjpaley10!你试过评估这个公式吗?转到 公式 选项卡,然后在 公式审核 组中,单击 评估公式 以逐步完成计算过程。我相信根本问题与它是一个数组公式有关,而您的公式用
@引用了开始日期和结束日期。看看这个site,以更好地理解结构化引用。 -
@TotsieMae 我编辑了帖子以添加有关何时评估公式的详细信息。为什么它会正确评估公式的一部分而不是另一部分?
-
您在 SLA 假期 中的假期顺序是怎样的?你能告诉我们日期吗?
-
@TotsieMae 我找到了错误的根源! 开始日期 和 结束日期 列包含对计算日期的其他列的引用,而不仅仅是实际日期值。当我将其切换为实际日期值时,该公式有效。非常感谢您的帮助!
-
我在玩弄你的公式,注意到它在所有日期范围的情况下都没有给出正确的答案,即使它工作正常。假设您的假期包括美国独立日 (7/4/18) 和阵亡将士纪念日 (9/3/18) 美国假期,开始日期为 2018 年 7 月 5 日,结束日期为 2018 年 9 月 5 日报告为 FALSE,而 8/31/18 到 9/5/18 报告为 TRUE。这似乎是潜在的隐藏错误。
标签: excel excel-formula excel-2013 excel-tables