在 Google 表格的过滤视图中排序时,ArrayFormula 列消失

Posted

技术标签:

【中文标题】在 Google 表格的过滤视图中排序时,ArrayFormula 列消失【英文标题】:ArrayFormula column disappears when sorting in a filter view in Google Sheets 【发布时间】:2019-01-18 15:12:30 【问题描述】:

我想使用ArrayFormula 填充电子表格中的列,但是当我在过滤视图中Sort A->Z 时,ArrayFormula 列消失了。在某些情况下,该列包含有关范围的#REF! 错误,在某些情况下,该列在Sort 之后只是空白。以下是我正在尝试做的简化版本(在我的实际应用程序中,我正在对另一张工作表执行Vlookup):

https://docs.google.com/spreadsheets/d/1XbqqedOjuSKuE-ZLIHNw59-r01EsNMpx7YVqOoxSOR4/edit?usp=sharing

column 3 标头使用ArrayFormulacolumn 1 复制。如果您转到Filter 1 过滤器视图,您会注意到column 3 是空白的,除了一个错误。这发生在我尝试在第 2 列上 Sort Z->A 之后。在我更复杂的用例中,涉及 Vlookup,在 Sort 之后,该列完全消失(没有留下 #REF! 错误)。在对这两种情况进行排序之前,一切都很好。

如何使 ArrayFormula 值在排序后保留在过滤器视图中?

感谢您的帮助!

【问题讨论】:

【参考方案1】:

我猜是因为你的引用是正常的(相对的,不是锚定的/绝对的),排序后的范围 A2:A10 变成了一些荒谬的东西,比如 A7:A4,这取决于实际排序的值。

另外,如果您将鼠标悬停在 #REF 错误上,它会告诉您什么?

无论如何,请尝试在公式中使用绝对引用:

=arrayformula("Column 3"; A$2:A$10)

编辑 迷人。这是我第一次看到这种类型的错误。从表面上看,这似乎是谷歌电子表格的一个限制——你不能在排序的过滤器视图中使用跨越多行的 ARRAYFORMULAS,因为就像我猜的那样,它弄乱了 ARRAYFORMULA 的范围(如事实所示公式现在在 C4 而不是 C1) 中。

但这也为您提供了解决方案:不要在过滤视图中包含带有数组公式的单元格。不要将过滤视图的目标范围设为 A1:C20,而是设为 A1:B20。然后C1中的arrayformula将不受过滤器的影响,并且确实会继续工作。

【讨论】:

绝对引用并没有解决我的问题。编辑以包含弹出错误。【参考方案2】:

我已经为我的用例找到了一个解决方案,在你的情况下,它可能是:

=arrayformula(if(row(C:C)=1;"Column 3";A:A))

但您需要考虑公式中的所有列。 Example

【讨论】:

这对我来说适用于某些专栏,但不适用于其他专栏。 这对我也有用,但我花了很长时间才明白你的意思,所以让我尝试扩展......你需要将公式设置为 第一行 列 C,以便更新整个列。为确保该列具有您想要的标题,您有 IF - 基本上如果这是第一行,则在单元格中显示“第 3 列”。【参考方案3】:

你试过 A2:A 吗? 如果您不放置结束行,则表示该列的结尾。 它对我有用。

干杯

【讨论】:

以上是关于在 Google 表格的过滤视图中排序时,ArrayFormula 列消失的主要内容,如果未能解决你的问题,请参考以下文章

使用 Google 表格中的单个公式从范围创建动态排序和过滤列表

一起使用过滤器和排序的 Google 工作表

在 Google 表格中过滤最快和平均时间

嵌入可以由查看者排序的谷歌表格单元格

使用 NSPredicate 对表视图中的核心数据进行排序 (Swift)

MVC 5 排序和过滤数据