Łączenie tylko wypełnionych komórek

21

Obecnie mam arkusz kalkulacyjny do śledzenia wyników w grze karcianej. Może być od dwóch do pięciu graczy. Mam następujące:

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

W tej chwili używam:

= JOIN( " vs " ; C10:C14 )

Ale problem polega na tym, że w końcu mam Dave vs Paul vs John vs vs.

Czy istnieje sposób, aby to powiedzieć, Dave vs Paul vs Johnale gdybym miał więcej graczy, Dave vs Paul vs John vs Robz jedną formułą?

Djave
źródło

Odpowiedzi:

16

Wypróbuj TEXTJOIN :

=textjoin(" vs ",1,C10:C14)
orzechy
źródło
2
To najlepsza odpowiedź. Jest krótszy, prostszy i pozwala zignorować puste wartości.
Ricardo Amaral
1
Zawsze czytam wszystko, by znaleźć najlepszą odpowiedź, a nie tylko „roboczą odpowiedź” :)
Ricardo Amaral
5

Oba powyższe rozwiązania działają, jeśli jest co najmniej jedna komórka zawierająca tekst. Jednak:

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

Wróciłby, %%%%gdyby C10: C14 były puste i.

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

Wróciłby, #N/Agdyby wszystkie C10: C14 były puste.

Można jednak nieznacznie zmienić pierwsze rozwiązanie, aby zastąpić %znaki pustymi łańcuchami, zawijając formułę SUBSTITUTEfunkcją w następujący sposób:

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

(Dla większej przejrzystości pokazano na wielu liniach)

Kieran Macdonald-Hall
źródło
Uwaga: „powyżej” naprawdę nie ma kontekstu w odpowiedziach, ponieważ odpowiedzi można sortować na różne sposoby.
ale
4

Znalazłem inne rozwiązanie:

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

% Może być dowolnym symbolem naprawdę nieobecnym na liście, takim jak przecinek, znak ampersand lub znak zapytania.

dan
źródło
Ładna alternatywa !!
Jacob Jan Tuinstra