Google sheets 在一个单元格中洗牌逗号分隔的值列表(谷歌工作表)

Google sheets 在一个单元格中洗牌逗号分隔的值列表(谷歌工作表),google-sheets,google-sheets-formula,Google Sheets,Google Sheets Formula,我想知道是否有人能帮我在谷歌表单中的一个单元格中洗牌一个逗号分隔的值列表。我的数据如下所示: peter, andrew, mike, michael, ..., thomas 我想为每一行随机洗牌这个字符串,我有大约一千行,它们都有一个单元格,看起来像这样 任何公式或链接到一个页面,我可以更接近一个解决方案将不胜感激 可拖动的单一公式 如果您可以向下拖动公式,则可以使用以下公式: =ArrayFormula( JOIN( ", ",

我想知道是否有人能帮我在谷歌表单中的一个单元格中洗牌一个逗号分隔的值列表。我的数据如下所示:

peter, andrew, mike, michael, ..., thomas
我想为每一行随机洗牌这个字符串,我有大约一千行,它们都有一个单元格,看起来像这样

任何公式或链接到一个页面,我可以更接近一个解决方案将不胜感激

可拖动的单一公式 如果您可以向下拖动公式,则可以使用以下公式:

=ArrayFormula(
    JOIN(
        ", ",
        Array_Constrain(
            SORT(
                TRANSPOSE(
                {
                    SPLIT(A1, ", ");
                    RANDARRAY(1,COUNTA(SPLIT(A1, ", ")))
                }),
                2,
            ),
            COUNTA(SPLIT(A1,", "))
            ,1
        )
    )
)
两个阵列公式 可能会将这两个部分合并为一个,因此我稍后可能会再次讨论这一点

  • 请确保有三列是空白的。我选择C作为我的起始列
  • 最终结果

  • 棘手的部分是如何让“组连接”发挥作用。

    您能展示一下您迄今为止所做的尝试吗?你们用过什么搜索词吗?很多——我已经知道如何按字母排列字符串,给每个字母分配一个随机数,然后排序并将它们重新组合在一起。我知道这是一条正确的道路,但公式相当复杂(因为我不太熟悉G表公式),所以我很难将其应用到我的用例中。你能分享一份测试表,其中包含给定场景、结果和你使用的公式的数据吗?这真的会帮助我们。我正在努力想出一个基于公式的解决方案,但我知道一些专家会想出一些办法。。。我会继续努力的。@sharkmountain很好,你已经尝试了一些解决方案。你能编辑你的问题来包含这个吗?不需要写“编辑”或“更新”,只需将您尝试过的内容整合到您的答案中即可。只是要指出,如果您或其他人不知道,对于@Calculuswiz的第一个公式,即可拖动的单例,它实际上不必向下拖动,前提是相邻列的数据一直向下。在单元格中输入该公式(或任何公式)后,只需双击该单元格右下角的小方形符号,即“抓取”向下拖动的位置。这将用等效公式填充单元格。比拖下一千行要容易得多。
    =ArrayFormula(
        SORT(
        {
            ARRAY_CONSTRAIN(
                SPLIT(
                    TRANSPOSE(
                        SPLIT(
                            TEXTJOIN(
                                ",",
                                1,
                                (SEQUENCE(COUNTA(A:A))-1)&"|"&SPLIT(FILTER(A:A&", ",LEN(A:A)),", ")
                            ),
                            ","
                        )
                    ),
                    "|"
                ),
                COUNTA(
                    SPLIT(TEXTJOIN(", ",1,A:A),", ")
                ),
                2
            ),
            RANDARRAY(
                COUNTA(
                    SPLIT(
                        TEXTJOIN(", ",1,A:A),
                        ", "
                    )
                ),
                1
            )
        },1,1,3,1)
    )
    
    =ArrayFormula(
        TRANSPOSE(
            SPLIT(
                REGEXREPLACE(
                    TEXTJOIN(
                        ", ",
                        ,
                        UNIQUE(
                            TRANSPOSE(
                                IF(
                                    TRANSPOSE(FILTER(C:C,LEN(C:C)))=FILTER(C:C,LEN(C:C)),
                                    FILTER(D:D,LEN(D:D)),
                                    ";"
                                )
                            )
                        )
                    ),
                    ", (;, )+",
                    ";"
                ),
                ";"
            )
        )
    )