Como você disse, IFs aninhados não são sua xícara de chá, mas não vejo outra maneira de fazer isso, sem a solução VBA apontada por @nixda.
Para as soluções que apresento, presumo que seus dados sejam como os seguintes:
| A |
-+---------+
1| Matthew |
2| Mark |
3| Luke |
4| John |
Eu tinha uma solução que fazia o que você queria, mas tornou-se "enterrada" . Eu entendi depois de ler os comentários que você deixou em uma resposta recente (especialmente o comentário sobre o fato de você sempre ter a primeira célula preenchida). Isso permite que não exista um ninho, já que a primeira condição (no raciocínio abaixo) é sempre falsa.
=CONCATENATE(A1;IF(ISBLANK(A2);"";"," & A2);IF(ISBLANK(A3);"";"," & A3);IF(ISBLANK(A4);"";"," & A4))
Você sempre pode eliminar o CONCATENATE
e substituir a fórmula por e comercial, conforme indicado na resposta do @Scott. Neste ponto, é simplesmente uma questão estética.
=A1 & IF(ISBLANK(A2);"";"," & A2) & IF(ISBLANK(A3);"";"," & A3) & IF(ISBLANK(A4);"";"," & A4)
O primeiro valor é sempre escrito, então a única coisa necessária é verificar se a célula ativa está em branco e adicionar uma vírgula por trás dela, se não estiver.
Dessa forma, você não precisa de nenhuma célula auxiliar, tudo está em uma única função.
Também escrevi uma versão mais elaborada, porque assumi o termo geral (ou seja, poderia haver uma situação em que você não preenchesse sua primeira célula). Requer apenas um ninho de 2 níveis, porque há no máximo 3 condições que precisam ser verificadas:
- As células antes da célula ativa estão vazias?
- A célula ativa está vazia?
- Nenhuma das afirmações acima é verdadeira? (condição de default)
A formatação necessária, supondo que você começou o raciocínio desde o início, é a seguinte:
- Se sim, então não coloque uma vírgula antes dos dados da célula. Se não, continue.
- Se sim, então não coloque nada (uma solução alternativa seria colocar a célula).
- Se nenhum for verdadeiro, coloque uma vírgula por trás dos dados da célula.
Como tal, aqui está a fórmula que usei. Eu assumi que todos os dados estavam em uma coluna, para usar em uma linha alterar algumas fórmulas e o intervalo.
=CONCATENATE(A1;IF(ROWS(A1:A1)=COUNTBLANK(A1:A1);A2; IF(ISBLANK(A2);"";"," & A2));IF(ROWS(A1:A2)=COUNTBLANK(A1:A2);A3; IF(ISBLANK(A3);"";"," & A3));IF(ROWS(A1:A3)=COUNTBLANK(A1:A3);A4; IF(ISBLANK(A4);"";"," & A4)))
ROWS
conta o número de linhas em um determinado intervalo. Se for igual ao número de células em branco por trás da célula active , significa que todas as células por trás da célula active estão em branco, pelo que nenhuma vírgula deve ser colocada antes.
O intervalo em ROWS
e COUNTBLANK
são as células atrás da célula ativa .