我在 Excel 中遇到的一个相当常见的问题是,我导入了一大组数据,并想对其进行各种计算。但首先我必须“填充”我的数据行,如下所示:
但如果输入数据是动态数组,我就不需要这么做了!我可以自动定义一个动态数组函数,它会填充到底部,不会再往下填充了。
所以我的问题是如何将初始输入放入动态数组中? 如果 A 列中的数据是唯一的,那么我可以B
使用在列中创建动态范围=UNIQUE(A:A)
。
但是,如果数据不是唯一的,我似乎无法=A:A
不填充B
工作表底部的列,即第 1048576 行,这会使工作表的大小(和计算时间)激增。
我想要的是=A:to_the_last_datapoint_in_A_and_no_further
有这样的事吗?谢谢!/YGA
答案1
也许你可以尝试这样的方法LastRow
=LET(
_Data, A:A,
_LastRow, MATCH(2,1/(_Data<>"")),
UNIQUE(A2:INDEX(_Data,_LastRow)))
- 使用
LET()
函数可以更容易阅读,减少冗余计算,提高效率。 _Data
是范围的定义变量A:A
_LastRow
是一个定义的变量,用于获取使用函数返回位置A:A
的范围内的最后一行。MATCH()
- 锚定第一个已知单元格,该单元格具有
A2
创建INDEX()
参考范围的功能,可以返回直到最后一行的数据。 - 最后应用
UNIQUE()
-如果需要的话。
或者使用TOCOL()
=UNIQUE(DROP(TOCOL(A:A,1),1))
- 使用
TOCOL()
函数排除具有空行的单个数组作为2nd
参数进行定义。 - 使用
DROP()
排除标题的函数,因为我们已经获取了整个范围A:A
- 最后,
UNIQUE()
如果需要的话,在函数内进行包装。
或者另一种更简洁的方法是使用Structured References
aka Tables
,然后在公式中使用它,这样Tables
帮助将数据带到最后一行,并随着数据中添加或删除而自动调整大小。
=UNIQUE(SomeData[Header])
注意:UNIQUE()
此处的函数是多余的,如果需要,也可以将其排除。使用相同的函数,认为 OP 也需要唯一的函数。
答案2
那
=FILTER(A:A, A:A<>"", "Empty")
删除空单元格,但不会删除重复项。
答案3
我认为https://superuser.com/users/1247873/mayukh-bhattacharya 的反应非常好,事实上我所寻找的非常简单:
=TOCOL(A:A,1)