支持语法糖! Excel函数BYROW与BYCOL的使用指南
脚本之家
今天跟大家介绍2个新的函数分别是BYROW与BYCOL,这2个函数也是LAMBDA的辅助函数,相较于之前介绍的LAMBDA的辅助函数它们是比较简单的,但是最近微软更新了辅助函数的书写规则,支持语法糖,可以简写了。
一、了解函数
1.BYROW:将 LAMBDA 应用于每一行,并返回结果数组
语法:=BYROW (array, lambda(row))
- 参数1:统计的数据区域
- 参数2:LAMBDA的计算式
2.BYCOL:将 LAMBDA 应用于每一列,并返回结果数组
语法:=BYCOL (array, lambda(row))
- 参数1:统计的数据区域
- 参数2:LAMBDA的计算式
它们的作用如下图所示,本质就是根据每一行或者每一列来做运算,结果与行列数相等,并且只会返回一个结果
总分公式:=BYROW(B2:D8,LAMBDA(x,SUM(x)))
科目最高:=BYCOL(B2:D8,LAMBDA(x,MAX(x)))
二、语法糖
在最近的几次更新中,基本上所有的LAMBDA的辅助函数都支持了语法糖,就是可以支持简写。在很早之前的版本中,想要使用辅助函数就需要指定LAMBDA,就好比上面的获取总分的公式,必须要在BYROW中写出LAMBDA,指明参数,
而现在对于一些简单的计算,我们可以直接将LAMBDA忽略,指定统计方式即可,常见的聚合函数都有的,大家可以试一下,下面我们来列举一些BYROW的常见用法
语法糖:=BYROW(B2:D8,SUM)
三、找到前几名
公式:=VSTACK({"姓名","分数"},TAKE(SORT(HSTACK(A2:A8,BYROW(B2:D8,SUM)),2,-1),3))
通过上面的公式,我们可以返回总分在前3名的人员,跟大家简单的介绍下公式得计算原理
- 1. 首先利用BYROW根据行计算出每个人总的得分
- 2. 随后利用HSTACK将姓名与成绩左右拼接成为一个表格
- 3. 然后利用SORT函数对这个姓名在总分的表格降序排序
- 4. 使用TAKE将前三行数据取出来
- 5. 最后利用VSTACK上下拼接,为表格增加一个表头。
四、找到类别
比如现在我们想要找到每个科目最高分对应的姓名,就可以利用下面这个函数。跟大家简单的说下计算的原理
公式:=BYCOL(IF(BYCOL(B2:D8,MAX)=B2:D8,A2:A8,""),LAMBDA(x,TEXTJOIN(",",TRUE,x)))
- 1. 利用BYCOL函数来得到每个科目的最高分
- 2. 利用IF判断当前的分数是否等于最高分,是就返回姓名,不是则返回空
- 3. 最后利用BYCOL+ TEXTJOIN将姓名合并在但一个单元格中
如果你想得到一个完整的表格,也可以利用TOCOL跟HSTACK合并一下,大家可以试一下
以上就是今天分享的全部内容了,这2个函数还是比较简单的大家可以试着练习一下,以后就不再添加辅助列,1步搞定结果,同事看了都不敢相信~