在 Google 表格中使用 ARRAYFORMULA 添加标题行

问题描述 投票:0回答:4

我观看了一个 tutorial,其中作者使用 IF 语句 以及 ARRAYFORMULA 函数 将标题行添加到数据列。给出了文档的链接;但是,有关如何使用

ARRAYFORMULA
的示例,请参阅此 answer

示例如下:

enter image description here

我可以通过将以下公式放入

C
中来填充
C1
列:

=ARRAYFORMULA(if(row(A:A) = 1, "spent", B:B - A:A))

我对语法感到困惑。我知道

X:X
引用了整个
X
列,但我不明白如何使用它来检查我们是否在一个上下文中位于单元格
A1
,然后用于在另一个上下文中应用质量公式。

  • 上面的线路是如何工作的?
  • 你能举例说明吗?
google-sheets google-sheets-api array-formulas
4个回答
29
投票

在我看来,您学到的信息让您期望

row(A:A)=1
翻译为 A1 行?

它的工作原理与此略有不同,您现在使用的语法基本上是说如果 A:A 中的任何行的值为 1,则写入“已用”,否则减去 B-A

我的建议:

使用文字数组来制作标题,然后使用 if(arrayformula) 仅用值填充行,以实现美观:

示例:

={"Spent";arrayformula(if(isnumber(A2:A),B2:B-A2:A,))}

说明:

{}
允许您构建一个文字数组,并且使用分号而不是逗号可以让您垂直堆叠单元格,然后我们检查A列中是否有值,如果有,则从B中减去A,否则留空。

enter image description here


0
投票

为什么不直接将列标题放在第一行单元格上,并使用 A2:A, B2:B 语法从第二行开始数组公式?

如果公式中没有必须,最好将其直接放在单元格上 - 让其他人更容易理解发生了什么,并且公式也会更简单。


0
投票

如果你把数组公式放在第2行,有人对数据进行排序,那么数组公式就会移动。如果它在标题行中,则不太可能发生。

也可以使用IFS函数来实现与数组类似的效果,

=arrayformula(ifs(row(A1:A)=1,"Spent",A1:A="",,True,B1:B-A1:A)

这里第一个条件检查行号,如果是第一行,则插入列标题。

第二个条件 -

A1:A="",,
- 确保空白行被忽略。

第三个条件

True
(ELSE)执行计算。

此方法还允许根据需要对不同行执行不同的计算。


0
投票

/* 以下公式将根据 =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_数量___ ) }

© www.soinside.com 2019 - 2024. All rights reserved.