本帖最后由 shaowu459 于 2025-3-19 14:51 编辑
请忽略公式长短,继续推广一下我一个帖子里的针对此类问题(从上到下,根据一定的条件分组、提取、变换、堆积)的通用做法。优点是可以忽略特殊的技术细节,一个套路完成。
递归替换REDUCE某类循环方式的一种方法(完结)
https://club.excelhome.net/thread-1694233-1-1.html
- =LET(f,LAMBDA(f,arr,res,LET(s,MATCH(1=1,arr<>@arr,),IF(@arr=0,IFNA(DROP(res,,1),""),IF(s>2,f(f,DROP(arr,s-1),HSTACK(res,TAKE(arr,s-1))),f(f,DROP(arr,1),res))))),f(f,+B1:B15,0))
复制代码 上面退出条件写的是=0,主要是看数据源没有0值。如果可能包括0值,将退出条件改成=""即可。注意:公式选择了数据区域下方的空白单元格。
- =LET(f,LAMBDA(f,arr,res,LET(s,MATCH(1=1,arr<>@arr,),IF(@arr="",IFNA(DROP(res,,1),""),IF(s>2,f(f,DROP(arr,s-1),HSTACK(res,TAKE(arr,s-1))),f(f,DROP(arr,1),res))))),f(f,+B1:B15,0))
复制代码
|