在 excel 中创建随机大小的随机字符串列表

Create random list of strings in random size in excel

我的 excel 中有以下数据。

A
Text 1
Text 2
Text 3
Text 4
Text 5
Text 6

我想用来自列 A 的随机连接数据填充列 B。它应该遵守标准 1> B > 6。即,列 B 应该有来自列 A 的最小值 1,或者最多可以有 6 个由 , 连接的唯一值。我可以将 B 列最多拖到 100 行。但是,他们仍然应该尊重标准。

我可以使用公式 INDEX($A:$A, RANDBETWEEN(1, ROWS($A:$A)), 1) 从列 A 中获取随机值,并使用公式

加入 2 个随机文本
=TEXTJOIN(",",true, INDEX($A:$A, RANDBETWEEN(1, ROWS($A:$A)), 1), INDEX($A:$A, RANDBETWEEN(1, ROWS($A:$A)), 1))

目前,我可以使用此公式获得 2 个固定字符串。我想知道是否有办法用随机数的唯一字符串(列 A 长度的最大大小与 , 连接)来获取此连接字符串,而不是执行上述 6 次。

我使用随机函数只能得到 1 个值。请告诉我该怎么做。

你可以试试:

B1中的公式:

=TEXTJOIN(",",,TAKE(SORTBY(A1:A6,RANDARRAY(COUNTA(A1:A6))),RANDBETWEEN(1,6)))

请注意,TAKE() 是一项仍处于测试阶段的新功能。如果您还没有访问权限,请尝试:

=TEXTJOIN(",",,INDEX(SORTBY(A1:A6,RANDARRAY(COUNTA(A1:A6))),SEQUENCE(RANDBETWEEN(1,6))))

在每个选项中:

  • SORTBY(A1:A6,RANDARRAY(COUNTA(A1:A6))) - 将创建 A 列中值的随机数组;
  • RANDBETWEEN(1,6) - 定义要连接的字符串的低位和 upper-limit 的部分;
  • TAKE/INDEX - 一种从上述随机数组中检索 X 行数的方法。在你的情况下,X 本身是随机的(见第二条);
  • TEXTJOIN() - 将所有选定值连接成一个字符串。
=TEXTJOIN(",", TRUE, INDEX(A:A, RANDARRAY(1, RANDBETWEEN(1, COUNTA(A:A)), 1, COUNTA(A:A), TRUE)))

EDIT 并没有完全击败 JvdV,但基本上与他的基础相似但没有使用 TAKE 并且没有对输出进行排序

此公式利用函数 RANDARRAYRANDBETWEEN 获取随机数量的文本项进行连接。

首先,我创建了一个名为 AllTextItems 的动态命名范围。这会自动扩展以捕获数据集中任意数量的行:

然后,使用公式:

=TEXTJOIN(",",TRUE,INDEX(AllTextItems,RANDARRAY(RANDBETWEEN(1,ROWS(AllTextItems)),1,1,ROWS(AllTextItems),TRUE)))

在您想要加入列表的单元格中。