Map函数实例-计算各名次的次数(Excel函数集团)

问题:B2:G6是各区域连续六周的销量数据,现需要计算每个区各得过几次第一、第二、第三、第四、第五。

=SUM(N(MAP(SEQUENCE(,6),LAMBDA(a,INDEX(SORTBY($A$2:$A$6,OFFSET($A$2:$A$6,,a),-1),ROW(A1))))=B$8))

使用公式“=SORTBY($A2:$A6,B2:B6,-1)”可以获得第11周各区域销量的排序,此公式右拉后可以得出每周的排序。

 但是,这是一个纵向维度的内存数组右拉的结果,如果将其转成横向维度的数组呢?

如果把B2:B6部分改成Offset(A2:A6,,Sequence(,6)),再在整个公式外面套Index函数,第二参数用Row(A1),理论上是可以得到此结果,但实际,因Offset的结果是多维引用,所以公式最终显示为错误值。

但是借助于Lambda系列的Map函数,将Sequence(,6)作为其第一参数,也就是Lambda所定义的内容,就可以越过多维引用,公式如下: 

=MAP(SEQUENCE(,6),LAMBDA(a,INDEX(SORTBY(A$2:A$6,OFFSET(A$2:A$6,,a),-1),ROW(A1))))

 再以此与每个区进行比对,使用Sum+N的模式计算出各名次的次数。

posted @ 2023-05-13 21:45  熬肥妖  阅读(174)  评论(0编辑  收藏  举报