Concatenando apenas células preenchidas

21

Atualmente, tenho uma planilha para acompanhar as pontuações em um jogo de cartas. Pode haver entre dois e cinco jogadores. Eu tenho o seguinte:

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

No momento eu uso:

= JOIN( " vs " ; C10:C14 )

Mas o problema é que eu acabo com isso Dave vs Paul vs John vs vs.

Existe uma maneira de fazer isso dizer, Dave vs Paul vs Johnmas se eu tivesse mais jogadores, Dave vs Paul vs John vs Robcom uma fórmula?

Djave
fonte

Respostas:

16

Experimente o TEXTJOIN :

=textjoin(" vs ",1,C10:C14)
nozes
fonte
2
Esta é a melhor resposta. É mais curto, mais simples e permite ignorar valores em branco.
Ricardo Amaral
1
Sempre leio tudo para procurar a melhor resposta não apenas uma "resposta de trabalho" :)
Ricardo Amaral
5

Ambas as soluções acima funcionam se houver pelo menos uma célula contendo texto. Contudo:

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

Retornaria %%%%se C10: C14 estivesse vazio e.

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

Retornaria #N/Ase C10: C14 estivesse vazio.

No entanto, você pode alterar ligeiramente a primeira solução para substituir os %sinais por seqüências de caracteres vazias, envolvendo a fórmula com a SUBSTITUTEfunção da seguinte maneira:

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

(Mostrado em várias linhas para maior clareza)

Kieran Macdonald-Hall
fonte
Observe: "acima" realmente não tem contexto nas respostas, pois as respostas podem ser classificadas de maneiras diferentes.
ale
4

Encontrei outra solução:

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

O% pode realmente ser qualquer símbolo que não esteja presente na lista, como vírgula, e comercial ou ponto de interrogação.

dan
fonte
Boa alternativa !!
: 27611 Jan Jacob Tuinstra