如何在 Google Sheets 中反转数组?

4
假设我有一列很长、无序且逐渐增长的数字,我要从中搜索偶数。
=filter(A1:A,ISEVEN(A1:A)=TRUE)

现在我想要将这个结果反过来,使得A列中最后一个偶数排在结果的第一位。很多例子使用辅助列或row函数,但这似乎不是一个选项,因为你在开始之前不知道这个数组中有多少个偶数元素。而且即使我使用rows单独计算,也无法弄清楚。看起来应该有一个相当简单的方法来“反转”一个数组对吧?

3个回答

3

使用:

=INDEX(SORT(FILTER({A1:A, ROW(A1:A)}, ISEVEN(A1:A), A1:A<>""), 2, 0),, 1)

enter image description here


2

试试这个:

=QUERY(FILTER({A:A,ROW(A:A)},ISNUMBER(A:A),ISEVEN(A:A)),"Select Col1 Order By Col2 Desc")

我认为你的回答是正确的方法。更普遍地说,如果你有一个数组而不是一个范围,所以你不能使用Row函数,你需要计算数组中行的数量,并使用Sequence(number_of_rows)来给数组的行编号。 - Tom Sharpe
是的。我只有OP提供的内容,他在原始公式中使用了一个真实的范围。 - Erik Tyler

0

如果你愿意深入了解应用脚本(扩展 > 应用脚本),你可以使用 JavaScript 的 Array.prototype.reverse() 函数。

将以下代码粘贴到你的应用脚本中:

/**
 * Reverses range
 *
 * @param {Array} range The range of cells
 * @return The input range reversed
 * @customfunction
 */
function REVERSE(range) {
  return range.reverse();
}

然后在您的单元格中使用以下公式:

=REVERSE(A1:A)

这种方法的一个优点是,您可以拥有一个紧凑且可重用的函数,更容易地嵌套在其他公式中。然而,我还没有进行任何测试来查看这种解决方案在大型表格中的性能影响,因此如果您有大量数据,您可能需要检查并确定哪个方法更有效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接