根据每个单元格的内容在列中实现公式

Implement formula in a column based on contents of each cell

在我的 Google Sheet 中,我有 1000 多行日期条目。对于每个日期,我分别使用 MONTH() 和 WEEKDAY() 函数计算 Month# 和 Week#。 这是 link 到 示例文件 https://docs.google.com/spreadsheets/d/1Af5-pYMFWZ1QtLoaAbPZYMGRvk43JBslUp4KyOFADfA/edit?usp=sharing

问题陈述: 对于具有唯一 Month# 和 Week# 的所有行,我想实现一个公式并计算输出。例如,在我的 sheet 中,第 3 行到第 6 行与 Month=1 和 Week=4 相关。对于这组 5 行,我将输出列计算为该组中第一个元素的减法(即... C3-$C$3、C4-$C$3、C5-$C$3 等等)。同样,第 7 到 10 行属于 Month=1 和 Week=5,所以我计算输出 作为 Data-$C$7 等等。

如何实现此结构以计算每组唯一的 Month# 和 Week# 值的输出列?

删除 F 列中的所有内容(包括 F2 header)。然后将以下公式放入单元格 F2:

=ArrayFormula({"Output";IF(C3:C="",,IFERROR(C3:C-VLOOKUP(E3:E,{E3:E,C3:C},2,FALSE)))})

这一公式将为所有有效行创建 header 和 return 结果。

因为 VLOOKUP 总是找到 它正在查找的第一个 匹配实例,我们可以用它来询问 C3:C 中的每个值减去每行 week-number 匹配的第一个实例。

顺便说一句,虽然你没有问这个,但你也可以在 D 和 E 列中使用这种类型的数组公式,而不是你拥有的所有单个公式。为此,请删除 D 列和 E 列中的所有内容(包括 headers)。那么...

将以下公式放入 D2 中:

=ArrayFormula({"Month #";IF(B3:B="",,MONTH(B3:B))})

... 以及 E2 中的以下公式:

=ArrayFormula({"Week #";IF(B3:B="",,WEEKNUM(B3:B))})