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的模式计算出各名次的次数。