如图,ABC三列为每个人的总步数及天数,F3为起始日期,如何通过函数构建要求天数的每个人每在的跑步步数,每天步数的要求如下:
倒数3天以上随机4200-4900步倒数;第2天,需要把总步数,减去上面随机的总数,除以2,乘以随机系数,取整,且不能超4900;最后一天,总步数减去以上步数 。
=DROP(REDUCE("",A3:A8,LAMBDA(x,y,LET(
a,IFERROR(RANDARRAY(OFFSET(y,,2)-2,,4200,4900,1),RANDBETWEEN(4200,4900)),
i,INT((OFFSET(y,,1)-SUM(a))/2*RAND()),
b,IF(i>4900,RANDBETWEEN(4200,4900),i),
c,OFFSET(y,,1)-SUM(a)-b,
VSTACK(x,IFS(OFFSET(y,,2)=1,HSTACK(F3,y,OFFSET(y,,1)),OFFSET(y,,2)=2,IFERROR(HSTACK(SEQUENCE(2,,F3,-1),y,VSTACK(a,OFFSET(y,,1)-a)),y),TRUE,IFERROR(HSTACK(SEQUENCE(OFFSET(y,,2),,F3,-1),y,VSTACK(a,b,c)),y)))))),1)
公式思路:核心思路是通过randarray等随机函数生成要求范围内的值,然后用reduce配合vstack、hstack将数据堆叠成所要要求的二维数组。
评论 (0)