“数组,真的不知道要怎么样才能学会……真的很难,还有什么三键录入,麻烦!” 这应该经常是新手抱怨的了,同时经常用数组的同学,也经常抱怨数组好用,但是数据量大或者逻辑复杂都容易卡,不是很友好!微软这些年更迭了很多版本,所以对数值这一块始终没有什么大的变化,但是365版本的更新,是一次大刀阔斧的改革,革掉了传统数组!这对新手获取是一件好事,下面小编就来好好聊聊这场有意义的革新之前,教新人数组,真的很难讲清楚,因为不是很直观,比如我们说是一个10个元素的数组,但是当我们输入到单元格中,只有一个1,完全看不出是数组,现在没有这个问题了,365引入了动态数组 以上的这种输入一个公式,直接回车,无需三键(CSE),会根据数组结构自动扩展的特性,365给了个一个新的叫法:动态数组。
直观好理解、无需三键是大家可见的,最实用或者最深层次的是 速度和性能的飞跃!
=IFERROR(INDEX($A$1:$D$13,SMALL(IF($A$2:$A$13="核果类",ROW($A$2:$A$13)),ROW(A1)),COLUMN(A1)),"") 传统的函数,每一个单元格中 IF($A$2:$A$13="核果类",ROW($A$2:$A$13) 部分都要计算一次,当数据源很大的情况下,这个计算量是很可怕的,所以传统说数组卡。 动态数组的好处就是,现在 IF($A$2:$A$13="核果类",ROW($A$2:$A$13) 在这个公式中只计算一次,缓存起来,后续调用,以上公式在365中不需要三键结果也是正常的。当然,我们也可以使用新的函数Filter来处理,非常推荐,简单好用~
=FILTER(A2:D13,A2:A13="核果类") 1、动态数组公式,公式只有一个单元格实际有,其他都是灰色,点击进去发现并没有公式,这获取间接说明了动态数组计算一次,性能提升。2、当有内容阻挡动态数组需要的区域时,会报 #SPILL!错误 。这也方便我们检查问题,遇到这种就去简单是不是有内容阻挡!有的时候,如果我们确实只需要和传统一样显示首个,365引入的概念叫做绝对交集,使用@这个符号来处理,@原公式 即可动画演示:默认动态数组自动扩展,加上@即可只获得公式所在单元格值! 比如我们上面案例中获取的结果,还要用于其他计算,那怎么引用上面的结果呢?传统的方式,我们肯定是选择对应的结果区域,比如F2:I4,案例说结果应该也是对应的这个区域,但是你会发现会变成,公式单元格地址# 的函数呈现在动态数组中,同步引入了新的符号-#,来获取对应的动态结果区域 365中新增了一批函数,大家比较喜欢了有TEXTJOIN、CONCAT、XLOOKUP、XMATCH查询函数等 数组相关,有我们上面演示的FILTER、UNIQUE等 条件习惯的:MAXIFS、SWITCH、MINIFS等等! 以上TEXTJOIN、CONCAT、XLOOKUP、SORT、FILTER已写过文件分享过
|