З’єднання лише заповнених комірок


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з однією формулою?

Відповіді:



16

Спробуйте TEXTJOIN :

=textjoin(" vs ",1,C10:C14)

2
Це найкраща відповідь. Він коротший, простіший і дозволяє ігнорувати порожні значення.
Рікардо Амарал

1
Я завжди читаю все, щоб шукати найкращу відповідь, а не просто "робочу відповідь" :)
Рікардо Амарал

5

Обидва вищезазначені рішення працюють, якщо є хоча б одна комірка, що містить текст. Однак:

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

Повернутися б , %%%%якщо С10: С14 були порожні і.

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

Повернутися б , #N/Aякщо С10: С14 були порожні.

Однак ви можете трохи змінити перше рішення щодо заміни %знаків порожніми рядками, обернувши формулу такою SUBSTITUTEфункцією:

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

(Показано на кілька рядків для наочності)


Зверніть увагу: у відповіді "вище" дійсно немає контексту, оскільки відповіді можна сортувати по-різному.
але

4

Я знайшов інше рішення:

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

% Може бути будь-яким символом, який справді відсутній у списку, як кома, амперсанд чи знак запитання.


Хороша альтернатива !!
Яків Ян Туінстра
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.