提问人:Leo 提问时间:10/25/2023 更新时间:10/25/2023 访问量:66
如何在Excel中创建一个动态数组,该数组是多个动态数组的串联?
How to create one dynamic array in Excel that is a concatenation of several dynamic arrays?
问:
我有一个返回列的函数。对于最小工作示例,请考虑名称为:randperm
=LAMBDA(n,
LET(ra, RANDARRAY(n),
sorted_ra, SORT(ra),
XMATCH(ra, sorted_ra)
)
)
现在我想得到的是(比如)4 x 5 数组中 4 个数字的 5 种不同的随机排列。
最有希望的尝试是:
=IF(sequence(,5),randperm(4))
它正确地生成一个 4 x 5 数组。但所有列都是一样的。
答:
2赞
VBasic2008
10/25/2023
#1
水平堆叠随机列
- 除了以下组合之外,看不到任何东西:
REDUCE
HSTACK
=LET(n,4,cols,5,
REDUCE(RandPerm(n),SEQUENCE(cols-1),
LAMBDA(rr,r,HSTACK(rr,RandPerm(n)))))
评论
0赞
Leo
10/27/2023
有趣。。。我从没想过要用它来增加数组......如果我们有能力添加评论就好了......REDUCE
2赞
DjC
10/25/2023
#2
另一种选择是使自定义函数递归:RANDPERM()
=LAMBDA(n,p,[initial_value],[start],
LET(
r, RANDARRAY(n),
s, SORT(r),
x, XMATCH(r, s),
arr, IF(ISOMITTED(initial_value), x, HSTACK(initial_value, x)),
c, IF(ISOMITTED(start), 1, start),
IF(c<p, RANDPERM(n, p, arr, c+1), arr)))
结果:
评论