excel函数技巧:reduce初始累积值的妙用-趣帮office教程网

如图A列至C列为源数据,某公司决定派发优惠券,同时扣减相关人员的销售收入,规则如下:

每当客户下单时,公司会比较之后几天的价格,赠送一张优惠券.面值是距离下单时间最近日期且小于当前下单金额的订单价的一半。

求扣减优惠券后销售人员的实际总收入。

公式如下:

=REDUCE({0;0;0},C2:C17,LAMBDA(x,y,LET(

a,OFFSET(y,,-2),

sum,y-IFERROR(TAKE(TOCOL(IF((OFFSET(y,1,,20)<y)*(OFFSET(y,1,-2,20)=a),OFFSET(y,1,,20),0/0),3),1)/2,0),

IFS(a="a1",x VSTACK(sum,0,0),a="a2",x VSTACK(0,sum,0),a="a3",x VSTACK(0,0,sum))

)))

公式思路:

此例主题架构:reduce(ifs……,ifs对传递进行来的数据判断属于哪一个销售员,并以数组的形式与初始值{0;0;0}相加。

a变量通过offset偏移得到销售人员的姓名。

sum变量计算折扣后的金额。

本例特色就是将初始值设置为一个数组,正好对应三个销售人员,并通过vstack函数对sum变量的位置调整,实现与三个销售人员的分类汇总的作用。