我在LAMBDA函数(MAKEARRAY)中嵌套了一个lambda函数,用于创建一个列,其中包含一系列日期。本系列从单元格start_date中定义的月份的最后一天开始,然后是下一个月的最后一天。这一个月间隔由单元格number_months中的值定义了许多次。
公式如下:
=MAKEARRAY(number_months,1,LAMBDA(r,c,EOMONTH(start_date,r-1)))
我想要的:
这个重复below.
number_repeats.中的值定义的
由于我将这个系列作为另一个工作表的行标题,所以我尝试使用TRANSPOSE(ARRAYFORMULA(间接选择变量范围),而不是再次生成重复的日期序列。但是,在这种情况下,我必须弄清楚如何在不使用REPT和SPLIT的情况下重复该数组一定次数,因为它远远超过了字符容量。
尽管如此,如果可能的话,我的首选是基于在另一个表中创建行标题的transposed函数的解决方案,而不是使用ARRAYFORMULA引用标题。
我觉得我可以使用序列,但我不知道如何将它与LAMBDA函数结合起来,重复这个系列一定次数。
发布于 2022-11-25 22:49:39
你觉得这个怎么样??您可以将最后一对括号中的B1:1更改为您自己的lambda函数。为了直观的目的(如果计算太长的话),我使用了B1:1和单元格A1中的一系列标头来声明"n“次数。
因此,"qt“是"headers”(与Counta一起完成)中的项目数量,“时间”是由您设置的数字。我使用了Counta,这样您就可以在标题(或lambda函数)中添加更多的项,并且它也可以灵活地工作。
BYROW显示范围,序列计算所需行数(qt*倍),MOD和INDEX遍历所需的页眉数量。
=lambda(qt,headers,lambda(times,byrow(sequence(qt*times),lambda(seq,INDICE(headers,,RESIDUO(seq-1,times)+1))))(CONTARA(headers)))(A1,B1:1)发布于 2022-11-26 09:53:09
您可以使用reduce多次重复数组:
=reduce("Header",sequence(num_repeats),lambda(total,value,{total;MAKEARRAY(number_months,1,LAMBDA(r,c,EOMONTH(start_date,r-1)))}))

不过,我已经手动格式化了日期。
发布于 2022-11-26 23:22:25
非常感谢汤姆和马丁
我还从帮助我的人那里得到了以下解决办法:
=MAKEARRAY(1, B1 * C1, lambda(r, c, eomonth(A1,{mod(c-1, B1)})))https://stackoverflow.com/questions/74577602
复制相似问题