Com valores possíveis em A1, B1 e C1 , em D1 digite:
=IF(A1="","",A1)&IF(B1="","",IF(A1<>"",", "&B1,B1))&IF(C1="","",IF(AND(A1="",B1=""),C1,", "&C1))
Isso evita usar espaços em branco e também evita usar vírgulas desnecessárias.
Eu estou querendo saber como concatenar uma linha de células com valores separados por vírgulas, mas excluir células vazias.
Por exemplo, a lista seria:
A1 - Cão
B1 - "célula vazia"
C1 - Cat
Estou procurando uma fórmula que retorne --- > Cão, gato
Realmente aprecie sua ajuda!
Com valores possíveis em A1, B1 e C1 , em D1 digite:
=IF(A1="","",A1)&IF(B1="","",IF(A1<>"",", "&B1,B1))&IF(C1="","",IF(AND(A1="",B1=""),C1,", "&C1))
Isso evita usar espaços em branco e também evita usar vírgulas desnecessárias.
O Excel não tem nenhuma função incorporada que possa fazer isso, existem soluções alternativas que acabam com valores codificados que eu realmente não gosto.
Como alternativa, você pode usar uma função definida pelo usuário
Function comb_cells(r As Range, Optional delim As String = " ") As String
For Each c In r
If IsEmpty(c.Value) Then
Else
If Len(comb_cells) = 0 Then
comb_cells = c.Value
Else
comb_cells = comb_cells & delim & c.Value
End If
End If
Next
End Function
Então a fórmula seria
=comb_cells(A1:C1,", ")
Infelizmente, funções definidas pelo usuário podem ser um problema, pois não funcionam fora dessa pasta de trabalho ou em outros computadores (dependendo de onde ela é salva), mas ainda acho que seria a melhor opção.
Essa função leva um intervalo que pode incluir tanto linhas quanto colunas para que cada comando faça um loop da mesma maneira que você leria (da esquerda para a direita, da próxima linha, da esquerda para a direita, etc.).