概括
使用 Excel 的新动态/溢出数组,从 2D 溢出数组中提取单个 1D 溢出列的最佳方法是什么?
细节
假设我在 Excel 中有一个 2D 动态数组并且它正在溢出,所以我不知道它有多少行(甚至可能随着输入数组的任何数据发生变化而发生变化)。
现在,如果我想引用整个数组,我可以使用#,溢出的范围运算符。例如,假设我的数组在 H3:L12 中(尽管请记住,虽然它目前有 10 行,但我不知道,也不知道它不会改变)。现在,如果我将公式 =H3# 放入单元格 N8(例如),那么我将在 N8:R17 中获得我的初始数组的副本。
但是假设我想要的只是原始数组 I3:I12 中第二列的副本。或者假设我想要原始数组,但在应用过滤器之后。例如,也许我想要一个新数组,它只包含原始行中每行中的第二个单元格大于 5 的行。有没有一种简洁的方法来做这些事情,也许使用溢出的范围运算符?
当然也有不太简洁的方法。例如,虽然我说过这是一个动态数组意味着我不知道行数,但实际上我可以使用 ROWS(H3#) 计算出来。然后我可以像这样使用 OFFSET() 。
=OFFSET(H3,0,ROWS(H3#),1)
然后对于第二种情况,我想要完整的数组但过滤后第二列大于 5,我可以:
=FILTER(H3#,OFFSET(H3,0,ROWS(H3#),1)>5)
在这两个公式中,我都没有明确提到“硬编码”的行数,因此保留了“动态”性质,这很好。但是,不得不特意提取那么多行,然后求助于 OFFSET(),这似乎很笨拙,特别是考虑到这是一个易变函数。没有更简单,更内置的方法吗?
谢谢。
要返回第二列,请使用 Index 函数:
您可以使用该
FILTER
函数返回过滤后的数组。例如:
考虑以下用户定义函数:
它可以采用多列或一个块并创建一个动态溢出: