【问题标题】:Add title row with ARRAYFORMULA in Google Sheets在 Google 表格中添加带有 ARRAYFORMULA 的标题行
【发布时间】:2017-07-27 00:08:33
【问题描述】:

我观看了tutorial,其中作者使用IF statementARRAYFORMULA function 为一列数据添加标题行。链接已提供给文档;但是,有关如何使用 ARRAYFORMULA 的示例,请参阅此 answer

下面是一个例子:

我能够通过将以下公式放入C1 来填充C 列:

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

我对语法感到困惑。我知道X:X 引用了整个X 列,但我不明白它是如何用于检查我们是否在一个上下文中位于单元格A1 中,然后用于在另一个上下文中应用质量公式。

  • 上面的行是如何工作的?
  • 您能举例说明一下吗?

【问题讨论】:

    标签: google-sheets google-sheets-api array-formulas


    【解决方案1】:

    在我看来,您学到的信息使您期望 row(A:A)=1 转换为 A1 行?

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

    我的建议:

    为了美观,使用文字数组制作标题,然后使用 if(arrayformula) 仅填充具有值的行:

    例子:

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

    解释:

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

    【讨论】:

    • +1 了解您如何处理0s!我一直在使用:if((B:B - A:A) > 0, B:B - A:A, ""),但我更喜欢isnumber 的方式:)
    • 谢谢 :) 另外顺便说一句,我在技术上只留下一个尾随逗号 , 而不是 ,"" 只是因为 ,"" 在技术上留下一个占用的空白单元格,但由于某种原因只留下逗号没有 - 我忘了在我的回答中解释这一点
    • 我也注意到了,您是否遇到过空字符串"" 会给您带来麻烦的情况?我认为值得添加答案:)
    • 是的,有时 - 它尤其会在尝试计算值时抛出 counta's,因为它在技术上会将空白字符串计为 1
    【解决方案2】:

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

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

    【讨论】:

    • 您的帖子应该是答案而不是评论。但是,原因是对表格进行排序、在 1 和 2 之间插入一行或以其他方式移动公式将导致其上方的单元格不被填充。
    【解决方案3】:

    如果您将数组公式放在第 2 行,并且有人对数据进行排序,那么数组公式将移动。如果它在标题行中,则发生这种情况的可能性较小。

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

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

    这里第一个条件检查行号,如果是第一行,则插入一个Column Header。

    第二个条件 - A1:A="",, - 确保忽略空白行。

    第三个条件True (ELSE) 执行计算。

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

    【讨论】:

      猜你喜欢
      • 2022-11-10
      • 2020-09-19
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 2017-11-08
      • 2016-07-02
      相关资源
      最近更新 更多