问题有一列日期需要与一行(标题)日期进行比较,以找到比较日期“所属”的列。
2022 年 8 月 8 日 | 2022 年 8 月 15 日 | 2022 年 8 月 22 日 | 2022 年 8 月 29 日 | 2022 年 9 月 5 日 | 2022 年 9 月 12 日 | 2022 年 9 月 19 日 | 2022 年 9 月 26 日 | |
---|---|---|---|---|---|---|---|---|
2022 年 9 月 9 日 | FEA 开发 |
如图所示,日期“9/9/2022”属于标题为“9/5/2022”的列。其理念是标题定义星期,条目需要输入正确的星期。
尝试的公式是=IF(AND($A4>=C$3,$A4<D$3),:FEA Dev","")
。目前它被放置在标题下的每个单元格中,因此 SPILL 没有帮助。
标题将会以某种未指定的方式“移动”。
希望找到一种方法来使 SPILL 发挥作用。
答案1
您的公式无法工作的确切原因SPILL
是,与许多函数一样,AND
(和OR
)仅提供一个输出。因此,公式最终会得到一个结果,而不是多个结果,并且没有任何内容可泄漏。
如果您重写公式来实现目标但不使用AND
,您将得到SPILL
结果。
例如:
=IF(A4 < B3:H3, "", IF(A4<C3:I3,"FFA Dev",""))
将会溢出到每一行,如果您想要一个溢出到所有行和列的单一公式,您可以使用:
=IF(A4:A5<B3:H3,"",IF(A4:A5<C3:I3,"FFA Dev",""))
(在这两种情况下,您都可以根据需要修改地址。)
请注意,使用SPILL
允许您将放入$
单元格地址中。
这就留下了解决最后一列的问题。如果像 9 月 27 日这样的日期要出现在标题为 9 月 26 日的列中,那么您需要找到一个不同的公式,或者添加一个“虚拟”列(虚拟的意思是,在本例中它有 10 月 3 日的标题,但永远不会有行条目出现在列中……它的存在只是为了让标题对公式有用),标题为下周的日期。
关于日期向左或向右移动的部分相当开放。如果你的意思是标签可能改变而不是物理移动,那么公式就可以正常工作。如果它们“起身并移动”,就像拖放一样,那么可能就是一个全新的难题。Excel 无法很好地处理地址更改。但是,在两个极端之间,可以复制,比如说,右边的四个日期,并将它们移动到起始列(此处为 B 列),然后在它们的右侧添加更多日期,这样就可以了。在第一个标题中放置一个起始日期,并在其右侧的每个标题中放置一个公式来添加七个,这样就可以了。
如果没有任何标题是“真实日期”呢?例如在正式的 Excel 表中。在这种情况下,您需要添加一种机制,将每个标题转换为公式中使用的日期。因此,真实标题仍为文本,但它们在公式中用作日期。只是更复杂而已,但继续使用它SPILL
可能会给您带来比您想要的更少的选择。
但是您的公式的绝对基本问题是AND
(和其他公式)不会为 Excel 提供多个结果。有趣的是,即使公式的描述总是说如果返回多个结果,则只有第一个结果(“顶部,左侧”)会作为结果传递,用于显示和输入到其他公式中,实际上也会在内部产生其完整的结果数组,并且通过正确的强制转换可以将它们传递给公式的其余部分。但AND
看起来它甚至没有做到这一点。所以,除非有人解决这个问题,否则您不能用它来让SPILL
公式泄露任何东西。
(如果你想尝试,这个想法是,这样的函数不是公式中的“外部”函数。你可以在它外面使用一个兼容的函数来将它产生的内部数组拉过去,然后整个数组就可以从那里向外进行计算了。但这似乎AND
对此有抵抗作用。)