Excel之数组公式(2)
- 2026-11-09 08:08:23

=CHOOSEROWS(A1:C4,1,3,4)
本函数的参数1是指定的数组,后面是要返回的行数序数。上面的例子是返回指定区域的第1、3、4行。

上例功能类似,但是第一个参数为区域数组。当然,第一个参数也可以是内存数组,不再举例了。
CHOOSECOLS函数的功能与之相似,但是提取的是列。

五、TAKE和DROP函数
TAKE用来从数组中提取连续的几行或几列。如果是从开头或者末尾提取连续的行列,比较方便。
下面从指定的数组最前方提取两行。

=TAKE(A1:C4,2)
下面第二个参数为负,意思是从指定的数组后方向前提取两行(即提前最后两行)

=TAKE(A1:C4,-2)
下面省略第二个参数,但是指定了第三个参数,可以提取指定的列。如果第三个参数是负值,则从后提取。



六、VSTACK和HSTACK函数
VSTACK函数把参数所指定的数组按纵向堆放在一起。

=VSTACK(A1:C1,A3:C4)
比如上面的例子就是把两个区域数组A1:C1和A3:C4堆放在一起。
可能有的读者觉得这样和前面的CHOOROWS函数没有什么区别,其实不然。因为我们这里可以接受两个不同的数组参数。比如下例的第一个参数是常量数组,并且元素用逗号间隔,第二个参数是区域数组。

HSTACK函数的功能类似,只是按横向堆放。并且第一个参数的元素之间用分号间隔。

如果前面的VSTACK函数中,第一个参数中的元素用分号间隔,则会出现下面的结果:

这里用VSTACK函数实现纵向的堆放,但是第一个参数是只有一列的纵向数组(分号间隔),所以它先用空值错误(N/A)填充第二列,再和A1:B3堆放在一起。
七、UNIQUE函数
本函数的功能是,提取唯一的记录。

=UNIQUE(A1:C4)
比如上面的例子,第一二行完全相同,则返回结果只有其中一行。但是下面的例子,第一行不完全相同,就会都返回出来。

比如某次活动,有人多次扫码签到,现在已经把每个人的扫码信息保存到上面的Excel文件中,怎样去掉重复的人呢?我们可以把数据先用TOCOL函数转化为单列数据,再用UNIQUE去重就可以了。

如果再用COUNTA计数,就可以得到实际参加活动的人数。
