【问题标题】:Is there a reason why my ArrayFormula is not working in the other cells of my column?我的 ArrayFormula 在我列的其他单元格中不起作用是否有原因?
【发布时间】:2019-02-15 08:15:01
【问题描述】:

在包含表单响应的 Google 工作表中,如果我的新列左侧的值已经出现在另一个工作表的某个范围内,我想从每个提交中查找一个附加列。
所以这最终将成为一个 Vlookup 公式。 不幸的是,我还没有进入 Vlookup 部分,因为 ArrayFormula 部分不起作用。 我首先使用这个公式查看左侧的单元格值,该公式有效,但其中的 ArrayFormula 部分不起作用。

=ArrayFormula(indirect(ADDRESS(ROW(), COLUMN()-1)))

我知道有些函数不能很好地与 ArrayFormula 一起使用, 但我看不出有任何理由这不应该起作用,因为它只查看它的行和它的列。

我希望图片能很好地说明问题

【问题讨论】:

  • Indirect() 不能在数组上迭代。也许还有其他方法可以实现您想要的?
  • 似乎有很多函数不适用于 ArrayFormula,但我找不到要避免的函数黑名单,所以我一直在不断尝试和错误,越来越沮丧.我认为我可以让它工作的唯一方法是在FormSubmit触发的脚本中粘贴公式,但我担心这不太可靠,特别是因为从长远来看,我将拥有超过100 个表单连接到这个电子表格。

标签: google-sheets


【解决方案1】:

如果您只想重复上一列中的值(假设 A 列,从第 2 行开始),您可以尝试在 B 列(也在第 2 行)

=Arrayformula(if(len(A2:A), A2:A,))

更改范围以适应。看看有没有帮助?

更新:要重复上一列(在您输入公式的任何位置)尝试(在第 2 行)

=offset(A1, 1, column()-2, rows(A1:A))

要“限制”输出,您可以使用任何数字代替行(A1:A)或将其替换为 COUNTA(A1:A)...

【讨论】:

  • 这里唯一一致的是阅读栏总是在源栏的右边。无论这对列位于何处,该公式都必须有效。这就是我使用 ROW()、COLUMN() 的原因,以便公式可以先确定自己的位置。
  • 我发布了第二个公式。看看有没有帮助?
【解决方案2】:

你可以这样做,它将在整个工作表中搜索特定的标题,然后返回该列的值:

=QUERY({INDIRECT("Sheet1!"&
 ADDRESS(1,       MATCH("job ID", Sheet1!1:1, 0), 4)&":"&
 ADDRESS(1000000, MATCH("job ID", Sheet1!1:1, 0), 4))}, 
 "select * where not Col1 matches 'job ID' and Col1 is not NULL", 0)


没有工作表名称:

=QUERY({INDIRECT(
 ADDRESS(1,       MATCH("job ID", 1:1, 0), 4)&":"&
 ADDRESS(1000000, MATCH("job ID", 1:1, 0), 4))}, 
 "select * where not Col1 matches 'job ID' and Col1 is not NULL", 0)

【讨论】:

  • 这可能是一个可能的解决方案。我让您的设置正常工作,它仅读取第 1 行的标题,但我可以更改为第 20 行,这也将在我的所有表单中保持一致。另一方面,工作表名称不能硬编码。我可以在工作表上有一个包含工作表名称的单元格,但我不确定我是否能让它工作:-(。
  • 如果没有工作表名,它只会查看活动工作表吗?因为每个工作表都会有一个名为 Job ID 的标题,只是不总是在同一列上而是总是在同一行上?正如我已经说过的,阅读(右)列中的每个单元格都必须在另一张纸的已知列中查找,因此在您的公式中包含此 Vlookup 函数将使我回到我相信的 ArrayFormula,或者我看到错了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2018-06-20
  • 2013-11-11
相关资源
最近更新 更多