ArrayFormula - если ячейка содержит совпадение, объедините другие ячейки с TEXTJOIN - PullRequest
1 голос
/ 26 июня 2019

У меня есть Google Sheet, который содержит имена персонажей вместе с соответствующими значениями для имени группы, «выбранного» и силы атаки.Это выглядит так:

Лист1

| NAME     | GROUP NAME | SELECTED  | ATTACK POWER |
|:---------|:-----------|----------:|-------------:|
| guile    | Team Red   |         1 |          333 | 
|----------|------------|-----------|--------------|
| blanka   | Team Red   |         1 |           50 |
|----------|------------|-----------|--------------|
| sagat    | Team Red   |           |          500 |
|----------|------------|-----------|--------------|
| ruy      | Team Blue  |         1 |          450 |
|----------|------------|-----------|--------------|
| vega     | Team Blue  |         2 |          150 |

Лист2

На втором листе у меня есть два столбца.Имя группы, которое содержит имена каждой команды из Sheet1 и имена, которые содержат мою текущую ArrayFormula:

=ARRAYFORMULA(TEXTJOIN(CHAR(10); 1; 
 REPT('Sheet1'!A:A; 1*('Sheet1'!B:B=A2))))

Используя эту формулу, я могу объединить все символы в одну ячейку (с помощью textjoin, повторяется с разрывами строк) на основена значение в названии группы.Результат выглядит следующим образом:

| GROUP NAME | NAME                      |
|:-----------|:--------------------------|
| Team Red   | guile                     |         
|            | blanka                    |
|            | sagat                     |
|------------|---------------------------|
| Team Blue  | ruy                       |
|            | vega                      |
|------------|---------------------------|

Проблема в том, что я хочу только объединить символы с выбранным значением 1.Вместо этого конечный результат должен выглядеть следующим образом:

| GROUP NAME | NAME                      |
|:-----------|:--------------------------|
| Team Red   | guile                     |         
|            | blanka                    |
|------------|---------------------------|
| Team Blue  | ruy                       |
|------------|---------------------------|

Я попытался выполнить следующую настройку, используя оператор IF, но он просто возвращает строку FALSE:

=ARRAYFORMULA(TEXTJOIN(CHAR(10); 1; 
 REPT(IF('Sheet1'!C:C="1";'Sheet1'!A:A); 1*('Sheet1'!B:B=A2))))

Может ли это бытьодин

1 Ответ

1 голос
/ 26 июня 2019

вставить в F2 ячейку:

=UNIQUE(FILTER(B:B, C:C=1))

вставьте в ячейку G2 и перетащите вниз:

=TEXTJOIN(CHAR(10), 1, FILTER(A:A, B:B=F2, C:C=1))

0


или G2 ячейка будет выглядеть так:

=ARRAYFORMULA(TEXTJOIN(CHAR(10), 1, 
 REPT(FILTER(Sheet1!A:A, Sheet1!C:C=1), 1*(FILTER(Sheet1!B:B, Sheet1!C:C=1)=F2))))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...