em Dicas e tutoriais

Concatene apenas células com texto no Excel

Você já deparou, certamente, com uma situação em que precisou combinar no Excel os valores de duas ou mais células em uma outra célula. A este processo chama-se concatenação, e o programa da Microsoft possui uma função especialmente criada para fazer isso, chamada CONCATENAR.

A sintaxe da função é simples:

=CONCATENAR(texto1, [texto2], ...)

No exemplo acima ilustrado, a célula D4 terá, como string resultante, “Daniel Santos“, isso porquê foi informado, como um dos parâmetros, o espaço (” “).

A função CONCATENAR será eficiente sempre que você informar, como parâmetros, células ou intervalos (ranges) que possuem texto inserido.

Agora, imagine que você possui uma tabela com vários dados, e que, por algum motivo, existem colunas ora em branco, ora preenchidas, em algumas linhas. Só que você precisa concatenar somente os textos das colunas preenchidas. Algo mais ou menos assim:

Se todas as células entre as colunas B e E estivessem preenchidas com nomes, seria fácil criar uma única fórmula CONCATENAR na coluna F, que tivesse a seguinte sintaxe, arrastando a fórmula para baixo nas demais linhas:

=CONCATENAR(B3:E3)

Mas este não é o caso, e a função CONCATENAR, especificada como acima, não será capaz de apresentar os resultados necessários. O que fazer então?

Embora provavelmente existam algumas dezenas de soluções possíveis, eu, ao me deparar com a situação acima em um outro contexto, acabei optando por criar uma função CONCATENAR customizada, usando VBA.

Eis a função em questão:

Function Conca(Faixa As Range, Optional separador As String = " ") As String
''''
' Concatena um conjunto de células, considerando como valores
' apenas aquelas em que exista algum valor preenchido
'
' Por Daniel Santos
' http://danielsantos.org/
'

'Declaração de variáveis
Dim c As Range
Dim strConcat As String

'Examina cada célula da faixa especificada
For Each c In Faixa.Cells

'Se o valor da célula atual contiver texto...
If c.Value <> "" Then
'Constrói a string concatenada célula-a-célula
strConcat = IIf(strConcat = "", c.Value & separador, strConcat & c.Value & separador)
End If

Next

'Retorna a string resultante para o Excel
Conca = strConcat

End Function

Uma vez que ela seja inserida em um módulo VBA, bastará utilizá-la como se fosse uma função pré-definida do Excel:

=CONCA(B3:E3)

Arraste o conteúdo para baixo, e pronto.

Uma coisa interessante que a função que criei admite um parâmetro opcional: o separador. Por default, a função usa espaços em branco entre os termos, mas você pode trocar o espaço por um ponto-e-vírgula, uma vírgula ou qualquer outro caractere que você quiser. Veja abaixo um exemplo com o ponto-e-vírgula como separador:

Espero que a função em questão ajude mais pessoas, e que ela seja útil também para você. Qualquer dúvida, diga aí nos comentários.

Escreva um comentário

Comentário

    • Oi Ana! Conforme explico no texto, esta é uma função que deve ser criada usando-se VBA (Visual Basic for Applications), que acompanha todos os aplicativos do Office. Para criar a função você precisa acessar o editor do VBA, o que pode ser feito pela combinação de teclas ALT+F11. Uma vez dentro do editor, use a barra de menus para criar um novo módulo, e cole a função acima nele.

      Em seguida, basta salvar o arquivo XLS (ou XLSX, se você estiver nas versões mais novas do Office), e depois usar a função recém criada como qualquer outra função já pré-existente no Excel.

      Obrigado pela visita!