Объединение только заполненных ячеек

21

В настоящее время у меня есть таблица для отслеживания результатов в карточной игре. Там может быть от двух до пяти игроков. У меня есть следующее:

| Players  |
|----------|
| Dave     |
| Paul     |
| John     |
|          |
|          |

На данный момент я использую:

= JOIN( " vs " ; C10:C14 )

Но проблема в том, что я в конечном итоге Dave vs Paul vs John vs vs.

Есть ли способ заставить это сказать, Dave vs Paul vs Johnно если бы у меня было больше игроков, Dave vs Paul vs John vs Robс одной формулой?

Djave
источник

Ответы:

16

Попробуйте TEXTJOIN :

=textjoin(" vs ",1,C10:C14)
pnuts
источник
2
Это лучший ответ. Это короче, проще и позволяет игнорировать пустые значения.
Рикардо Амарал
1
Я всегда читаю все, чтобы найти лучший ответ, а не просто «рабочий ответ» :)
Рикардо Амарал
5

Оба решения выше работают, если есть хотя бы одна ячейка, содержащая текст. Тем не мение:

= JOIN(" vs ",SPLIT(JOIN("%",C10:C14),"%",0))

Вернулся бы, %%%%если бы C10: C14 были бы пустыми и.

= JOIN( " vs " ; FILTER(C10:C14; NOT(C10:C14 = "") ))

Вернулся бы, #N/Aесли бы C10: C14 были бы пустыми.

Однако вы можете немного изменить первое решение, чтобы заменить %знаки пустыми строками, обернув формулу SUBSTITUTEфункцией следующим образом:

=SUBSTITUTE(
   JOIN(" vs ",SPLIT(JOIN("%",C10:C14),"%",0)),    // text_to_search
   "%",                                            // search_for
   ""                                              // replace_with
 )

(Показано на нескольких строках для ясности)

Киран Макдональд-Холл
источник
Обратите внимание: «выше» действительно не имеет контекста в ответах, поскольку ответы можно сортировать по-разному.
Эль
4

Я нашел другое решение:

=JOIN(" vs ",SPLIT(JOIN("%",C10:C14),"%",0))

% Может быть любым символом, которого нет в списке, например запятая, знак амперсанда или знак вопроса.

Дан
источник
Хорошая альтернатива !!
Джейкоб Ян Туинстра