我有以下数据:
Column B Column C
11 21 Oct 0.87%
12 22 Oct 1.38%
13 23 Oct 0.04%
14 24 Oct 0%
15 25 Oct 0%
对于每个日期都是如此,所有尚未发生的日期均为 0%。我还有一个单元格 (C2),其中包含以下公式:
{=AVERAGE( IF(B5:B373 < TODAY(); C5:C373))}
计算 C 列中所有值的平均值,包括当天的值(B 列),因此所有 0% 值均不包含在计算中。假设今天是 10 月 23 日,则 C2 的值将是 0.76%。
每天,我都会在相应的单元格中输入该日期的百分比,因此最终所有 0% 的单元格都将被适当的值替换。
我不想使用 0%,而是希望根据迄今为止的平均百分比运行一些预测计算。因此,基本上,我希望所有现在包含 0% 的单元格(因为我尚未输入实际值)都包含 C2 中的值,使其看起来像这样:
Column B Column C
11 21 Oct 0.87% < literal value
12 22 Oct 1.38% < literal value
13 23 Oct 0.04% < literal value
14 24 Oct 0.76% < =C2
15 25 Oct 0,76% < =C2
但是,这不起作用,因为它会在单元格中的公式和 C2 中的公式之间创建循环引用。
所以我需要一个使用范围的 C2 公式截至今天。我现在的公式使用整个范围然后使用 IF 排除未来的值,这意味着我无法在列中的其他单元格中使用结果。如果我有一个公式将范围限制为截至今天的所有单元格,那么我就能够在该范围之外的所有单元格中使用结果。我一直在尝试使用 INDEX 和 MATCH,但搞不懂。我尝试做的事情是否可行?
答案1
您可以使用 MATCH 来查找今天的日期在日期列中的第几位。
=MATCH(TODAY(),B5:B373,0)
您可以将该数字与 OFFSET 结合使用,从 C 列中获取仅包含今天的值的范围。
=OFFSET(C5,0,0,MATCH(TODAY(),B5:B373,0))
最后,您将获得该范围内值的平均值。在单元格 C2 中输入以下内容:
=AVERAGE(OFFSET(C5,0,0,MATCH(TODAY(),B5:B373,0)))
您现在可以输入=C$2
每个未来日期的值,而不会产生循环引用。