如图A列是一个从1到100的数列,每次排除1,3,5……等奇数列,排除奇数后,剩下的偶数继续从1开始编号再次排除奇数 请找出最后一个留下来的自然数
=REDUCE(A2:A101,SEQUENCE(10^6),LAMBDA(x,y,IF(ROWS(x)=1,x,FILTER(x,MOD(SEQUENCE(ROWS(x)),2)=0))))
公式思路,公式通过reduce函数完成循环,利用filter函数挑选出偶数行列,再进行一下次循环,当上一次循环筛选后的数字只有一列时,就显示x本身,不再循环,相当于其它编程语言中的loop,或者break。
lambda函数的确是完成了excel函数由单纯的函数向编程式语言的转变,从单元单元格到数组,再到数据遍历,实现了编程语言的基本功能。
当然,excel函数式编程是较为弱小的,但本例中让其循环10的6次方就是它的极限,也就是100万次左右。如果函数较为复杂,万次左右都很吃力。
评论 (0)