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

ArrayFormula column disappears when sorting in a filter view in Google Sheets

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

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

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

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

感谢您的帮助!

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

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

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

=arrayformula({"Column 3"; A:A})

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

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

我已经为我的用例找到了解决方案,对于您的情况,它可能是:

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

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

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

干杯