Scott apresenta uma solução simples para as versões mais recentes do Excel. As outras três soluções (até agora) usam funções simples que funcionam em qualquer versão do Excel. No entanto, as vírgulas delimitadoras são na verdade um pouco mais complicadas do que essas fórmulas manipulam. Para conseguir isso nesse estilo de solução requer alguma lógica para cada vírgula.
Aqui estão as possíveis combinações de valores presentes e ausentes:
Aprimeiralinhanãopossuivaloresausentes.Asquatrolinhasseguintestêmumvaloremfaltaemcadaposiçãopossível.Aspróximasseislinhastêmdoisvaloresausentesemcadaposiçãopossível.Emseguida,asquatrolinhasdetrêsvaloresausentese,finalmente,todososvaloresausentes.Paraobterumavírgulaondeénecessárioeapenasondeénecessário,vocêprecisadealgumalógicaparacadavírgula.
Amaneiramaisfácildefazerissoéassociaravírgulaaovalor"próximo". Em cada posição de vírgula, não há vírgula se nenhum valor veio antes dele (que é um caso diferente para cada posição). Se houver algum valor anterior, você só deseja uma vírgula se a próxima posição tiver um valor. Então a lógica da vírgula é assim:
First comma: =IF(J3="","",IF(K3="","",", ")) or =IF(AND(J3<>"",K3<>""),", ","")
Second comma: =IF(J3&K3="","",IF(L3="","",", ")) or =IF(AND(J3&k3<>"",L3<>""),", ","")
Third comma: =IF(J3&K3&L3="","",IF(M3="","",", ")) or =IF(AND(J3&K3&L3<>"",M3<>""),", ","")
Coloquei cada vírgula em uma coluna separada para ilustrar o padrão com as várias combinações de valores:
Asoluçãoconcatenaosvalores(ouembranco,senenhum),comasvírgulas.Parafacilitaraleitura,aquiestáafórmulacomavírgulainseridacomoreferênciaàcéluladafórmula:
=IF(J3="","",J3) &N3 &IF(K3="","",K3) &O3 &IF(L3="","",L3) &P3 &IF(M3="","",M3)
A substituição das fórmulas de vírgula pela fórmula de resultado fornece:
=IF(J3="","",J3) &IF(AND(J3<>"",K3<>""),", ","") &IF(K3="","",K3) &=IF(AND(J3&k3<>"",L3<>""),", ","") &IF(L3="","",L3) &=IF(AND(J3&K3&L3<>"",M3<>""),", ","") &IF(M3="","",M3)