【问题标题】:Google Sheets - Function to combine cells in a column into two columns with all possible combinations?谷歌表格 - 将一列中的单元格组合成两列并具有所有可能组合的功能?
【发布时间】:2019-02-19 16:58:21
【问题描述】:

谁能帮我写一个谷歌表格函数来做这个:

需要做什么的 Google 表格示例:

第一列可以用 X 行填充,每行都有一个名称。

根据这些名称,“目标”和“源”列将填充名称之间的所有可能组合无需重复一对(如果您已经有“Gustavo | Jacinto”,你不需要“Jacinto | Gustavo”)。

我知道我可以使用 python 和其他东西来解决这个问题,但我想使用 Google Sheets 的函数来解决这个问题,因为它会更快地获得我需要的响应。

【问题讨论】:

标签: google-sheets combinations google-sheets-formula


【解决方案1】:
=QUERY(ARRAYFORMULA(SPLIT(
 TRANSPOSE(SPLIT(REPT(CONCATENATE(A2:A&CHAR(9)), COUNTA(A2:A)),  CHAR(9)))& " "&
 TRANSPOSE(SPLIT(CONCATENATE(REPT(A2:A&CHAR(9),  COUNTA(A2:A))), CHAR(9))), " ")),
 "where Col1<>Col2 order by Col1", 0)

【讨论】:

  • 谢谢!它工作得非常好。 但是有什么方法可以防止函数产生重复的关系,如“name1 | name2”和“name2 | name1”?这真的很有帮助。
【解决方案2】:
=ARRAYFORMULA(SPLIT(SORT(
 TRANSPOSE(SPLIT(CONCATENATE(REPT(UNIQUE(TRANSPOSE(SPLIT(JOIN(",",TEXTJOIN(",",1,A2:A)),",")))&","&
 TRANSPOSE(UNIQUE(TRANSPOSE(SPLIT(JOIN(",",TEXTJOIN(",",1,A2:A)),",")))), (
 UNIQUE(TRANSPOSE(SPLIT(JOIN(",",TEXTJOIN(",",1,A2:A)),",")))<=
 TRANSPOSE(UNIQUE(TRANSPOSE(SPLIT(JOIN(",",TEXTJOIN(",",1,A2:A)),",")))))*
 REGEXMATCH(CONCATENATE(","&SUBSTITUTE(TEXTJOIN(",",1,A2:A),",",",,")&","&CHAR(9)),"(,"&
 UNIQUE(TRANSPOSE(SPLIT(JOIN(",",TEXTJOIN(",",1,A2:A)),",")))&",[^\t]*,"&
 TRANSPOSE(UNIQUE(TRANSPOSE(SPLIT(JOIN(",",TEXTJOIN(",",1,A2:A)),","))))&",)|(,"&
 TRANSPOSE(UNIQUE(TRANSPOSE(SPLIT(JOIN(",",TEXTJOIN(",",1,A2:A)),","))))&",[^\t]*,"&
 UNIQUE(TRANSPOSE(SPLIT(JOIN(",",TEXTJOIN(",",1,A2:A)),",")))&",)"))&CHAR(9)),CHAR(9)))),","))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    相关资源
    最近更新 更多