Google Sheets - Функция для объединения ячеек в столбце в два столбца со всеми возможными комбинациями? - PullRequest
0 голосов
/ 19 февраля 2019

Может ли кто-нибудь помочь мне написать функцию Google Sheets для этого:

Пример Google Sheets, что необходимо сделать:

Google Sheets example of what needs to be done

Первый столбец может быть заполнен X строками с именем в каждом.

Исходя из этих имен, столбцы "target" и "source" будут заполнены все возможные комбинации между именами , без повторения пары (если у вас уже есть "Gustavo | Jacinto", вам не нужен "Jacinto | Gustavo").

Я знаю, что могу решить эту проблему, используя python и другие вещи, но я хотел сделать это, используя функции Google Sheets, потому что было бы быстрее получить ответ, который мне нужен.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019
=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)))),","))

0

0 голосов
/ 19 февраля 2019
=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)

...