本帖最后由 Michael.Deng 于 2022-4-24 09:03 编辑
缩减第一次=SUBSTITUTE(INDEX(LOOKUP(ROW($1:$300),ROW($B$1:$B$31)+$K$1*(MMULT(-(MATCH($B$1:$B$31,$B:$B,)>=COLUMN($A:$AE)),-(MATCH($B$1:$B$31,$B:$B,)=ROW($1:$31)))-1),$B$2:$B$31),7*ROW()+COLUMN()-25,1),0,)
=IFERROR(INDEX(LOOKUP(ROW(INDIRECT("1:"&30+SUM(1/COUNTIF($B$2:$B$31,$B$2:$B$31))*$K$1)),ROW($B$1:$B$31)+$K$1*(MMULT(-(MATCH($B$1:$B$31,$B:$B,)>=COLUMN($A:$AE)),-(MATCH($B$1:$B$31,$B:$B,)=ROW($1:$31)))-1),$B$2:$B$31),7*ROW()+COLUMN()-25,1),"")
讲一下思路
1、首先进行数组拓展;
=LOOKUP(ROW(INDIRECT("1:"&ROWS(DATA02)*3)),ROW(INDIRECT("1:"&ROWS(DATA02)))*3-2,DATA02)
这是按3倍进行拓展,弄懂原理之后只需要将lookup的第二个参数进行运算即可,核心模型
2、然后手工计算出{1;6;7;12;13;14;15;16;21;26};
=LOOKUP(ROW(INDIRECT("2:"&10+SUM(1/COUNTIF($B$2:$B$11,$B$2:$B$11))*$K$1)),{1;6;7;12;13;14;15;16;21;26},$B$2:$B$11)
3、找到数组2与位置的关系,要错位相减,这里起始用1还是2算了很久(这里运算要用1);
其中寻求了一下老师的帮助,将数据按顺序存入内存数组中,感谢老师;
4、最后就比较小儿科了,就是换行取数,按照算法依次运算即可。
整整搞了2天,还是比较开心的,有空再来缩减一下吧。 |