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

snl*_*snl 7 sorting filter google-sheets array-formulas

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

https://docs.google.com/spreadsheets/d/1XbqqedOjuSKuE-ZLIHNw59-r01EsNMpx7YVqOoxSOR4/edit?usp=sharing 数组公式使用 糟糕的过滤器视图

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

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

谢谢你的帮助!

tta*_*ala 5

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

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

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

=arrayformula({"Column 3"; A$2:A$10})
Run Code Online (Sandbox Code Playgroud)

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

但这也为您提供了解决方案:不要在过滤器视图中包含带有 arrayformula 的单元格。不要将过滤器视图的目标范围设为 A1:C20,而是设为 A1:B20。那么 C1 中的 arrayformula 将不会受到过滤器的影响,并且确实会继续工作。 在此处输入图片说明


小智 5

我已经找到了适合我的用例的解决方案,就您而言,它可能是:

=arrayformula(if(row(C:C)=1;"Column 3";A:A))
Run Code Online (Sandbox Code Playgroud)

但您需要考虑公式中的整个列。 例子