excel 将列表中的五个随机项放入单个单元格中,用逗号分隔

dgtucam1  于 2023-01-27  发布在  其他
关注(0)|答案(2)|浏览(153)

我在A列的n个单元格中有n个唯一值。(例如:EDN12、EDN122、EDN991等)
我想从A列返回任意五个不重复的唯一值,并以随机顺序将其返回到单个单元格中,用逗号分隔n次。(第12版、第112版、第991版、第881版、第12版)
我如何实现这一目标?
我试过这里提供的这个公式(将列表的随机顺序返回到单个单元格中)
=TEXTJOIN(",",,INDEX($A$1:$A$5,UNIQUE(RANDARRAY(1000,1,1,5,TRUE))))
但它只为A列中的起始五个单元格生成五个值,其余的被省略。

nwlqm0z1

nwlqm0z11#

假设列A中的值本身是唯一的,请尝试:

=LET(x,TOCOL(A:A,3),TEXTJOIN(", ",,TAKE(SORTBY(x,RANDARRAY(COUNTA(x))),5)))

否则,只需将'x'嵌套在UNIQUE()中:

=LET(x,UNIQUE(TOCOL(A:A,3)),TEXTJOIN(", ",,TAKE(SORTBY(x,RANDARRAY(COUNTA(x))),5)))

carvr3hs

carvr3hs2#

这是不使用LET获得所需结果的替代公式。
虽然我更喜欢使用LET函数的解决方案。

=INDEX(A3:A22,INDEX(UNIQUE(RANDARRAY(COUNTA(A3:A22),1,1,COUNTA(A3:A22))),SEQUENCE(5)))

分解:
根据数据行数获取一个随机数数组。

=RANDARRAY(COUNTA(A3:A22),1,1,COUNTA(A3:A22),TRUE)

从随机数数组中提取唯一值。

=UNIQUE(C3#)

提取前五个唯一值

=INDEX(D3#,SEQUENCE(5))

使用提取的值从源数据中提取匹配的行。

=INDEX(A3:A22,E3#)

最后将这些值合并到一个单元格中。

=TEXTJOIN(", ",TRUE,F3#)

如果您的数据列表非常短,那么它可能返回非唯一值。
虽然您的示例看起来至少有1000个数据行,所以这不会是一个问题。

相关问题