动态数组的出现,三键或成历史

“数组,真的不知道要怎么样才能学会……真的很难,还有什么三键录入,麻烦!” 这应该经常是新手抱怨的了,
同时经常用数组的同学,也经常抱怨数组好用,但是数据量大或者逻辑复杂都容易卡,不是很友好!
微软这些年更迭了很多版本,所以对数值这一块始终没有什么大的变化,但是365版本的更新,是一次大刀阔斧的改革,革掉了传统数组!这对新手获取是一件好事,下面小编就来好好聊聊这场有意义的革新
动态数组的出现,三键或成历史
之前,教新人数组,真的很难讲清楚,因为不是很直观,比如我们说
=ROW(1:10)
是一个10个元素的数组,但是当我们输入到单元格中,只有一个1,完全看不出是数组,现在没有这个问题了,365引入了动态数组
动画演示:录入公式,直接扩展,无需三键
以上的这种输入一个公式,直接回车,无需三键(CSE),会根据数组结构自动扩展的特性,365给了个一个新的叫法:动态数组
动态数组,是为了区别与传统数组的叫法。
动态数组以上的处理方式,你肯定也有很多好奇:
  1. 这样有什么好处?
  2. 如果有其他内容挡住无法扩展怎么处理?
  3. 怎么和传统方式一样,不扩展
  4. 如何在其他公式中引用这个动态区域,全选?
  5. 有没有对应的新函数等等
下面我们就针对以上问题,一一来交流:

动态数组有什么好处?

直观好理解、无需三键是大家可见的,最实用或者最深层次的是 速度和性能的飞跃!
举一个非常常见的例子,就是按条件查找数据:
案例说明:查询类别为核果类的所有明细
=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函数完成筛选~
=FILTER(A2:D13,A2:A13="核果类")
录入公式直接回车即可~不能太简单,太舒服!
好处我们就说这么多!~
动态数组扩展受阻会怎么样?
直接来看,我们就使用上面的案例
直接可以看出两点:
1、动态数组公式,公式只有一个单元格实际有,其他都是灰色,点击进去发现并没有公式,这获取间接说明了动态数组计算一次,性能提升。
2、当有内容阻挡动态数组需要的区域时,会报 #SPILL!错误 。这也方便我们检查问题,遇到这种就去简单是不是有内容阻挡!
如何和传统方式一样,不自动扩展(@符号)
有的时候,如果我们确实只需要和传统一样显示首个,365引入的概念叫做绝对交集,使用@这个符号来处理,@原公式 即可
动画演示:默认动态数组自动扩展,加上@即可只获得公式所在单元格值!
有365的同学,快去试试吧!
如何引用动态数组(#符号)
比如我们上面案例中获取的结果,还要用于其他计算,那怎么引用上面的结果呢?
传统的方式,我们肯定是选择对应的结果区域,比如F2:I4,案例说结果应该也是对应的这个区域,但是你会发现会变成,公式单元格地址# 的函数呈现
在动态数组中,同步引入了新的符号-#,来获取对应的动态结果区域
获取动态数组结果中第二行第三列的值
=INDEX(F2#,2,3)
动态演示:公式录入过程及效果
新增函数
365中新增了一批函数,大家比较喜欢了有TEXTJOIN、CONCAT、XLOOKUP、XMATCH查询函数等
数组相关,有我们上面演示的FILTER、UNIQUE等
同时还新增了排序相关函数:SORT、SORTBY
条件习惯的:MAXIFS、SWITCH、MINIFS等等!
以上TEXTJOIN、CONCAT、XLOOKUP、SORT、FILTER已写过文件分享过
(0)

相关推荐