我观看了一个 tutorial,其中作者使用 IF 语句 以及 ARRAYFORMULA 函数 将标题行添加到数据列。给出了文档的链接;但是,有关如何使用
ARRAYFORMULA
的示例,请参阅此 answer。
示例如下:
我可以通过将以下公式放入
C
中来填充 C1
列:
=ARRAYFORMULA(if(row(A:A) = 1, "spent", B:B - A:A))
我对语法感到困惑。我知道
X:X
引用了整个 X
列,但我不明白如何使用它来检查我们是否在一个上下文中位于单元格 A1
,然后用于在另一个上下文中应用质量公式。
为什么不直接将列标题放在第一行单元格上,并使用 A2:A, B2:B 语法从第二行开始数组公式?
如果公式中没有必须,最好将其直接放在单元格上 - 让其他人更容易理解发生了什么,并且公式也会更简单。
如果你把数组公式放在第2行,有人对数据进行排序,那么数组公式就会移动。如果它在标题行中,则不太可能发生。
也可以使用IFS函数来实现与数组类似的效果,
=arrayformula(ifs(row(A1:A)=1,"Spent",A1:A="",,True,B1:B-A1:A)
这里第一个条件检查行号,如果是第一行,则插入列标题。
第二个条件 -
A1:A="",,
- 确保空白行被忽略。
第三个条件
True
(ELSE)执行计算。
此方法还允许根据需要对不同行执行不同的计算。
/* 以下公式将根据 =arrayFormula() 的参数以数组形式返回列。 请务必删除“变量”占位符。
“_Column_Title” = 最后冻结行中列顶部的标题。
"_Array_Formula" = 要转换为数组的公式。 指定一个范围,而不仅仅是单个单元格。
“_KEY_COL_LETR_RNG”=“键”值列通常在每行中包含一个值,通常在 =arrayFormula() 中使用。
“_COLS_QTY” = 要生成的列数,几乎总是一 (1)。
工作原理:
整个公式周围的花括号创建一个数组,以列标题开头,后跟 =array_Constrain() 生成的数据。
=arrayFormula() 周围的 =array_Constrain() 将 =arrayFormula() 列的长度限制为包含“键”值列中数据的最后一个单元格。
=max() 公式确定“key”列中非空白的最后一个行号,然后减去“title”标签的行号,该标签也包含此公式。 这为 =array_Constrain() 公式提供了“行数”参数。
=arrayFormula() 为 =array_Constrain() 公式提供第一个参数,方法是根据封闭公式的应用生成一个数组,每行都有相应的数据可供封闭公式使用。 如果您不熟悉 =arrayFormula(),请使用有关该主题的许多可用帖子来进一步了解情况。
*/
={"Column_Title__"; 数组约束( 数组公式( xxx_数组_公式__ ), 最大限度( 数组公式( 如果( KEY_COL_LETR_RNG_="", "", 行(KEY_COL_LETR_RNG_) ) ) ) - 排(), 1 COLS_数量___ ) }