Bom dia pessoal, *(sim o dia tem 24 horas então eu posso dizer bom dia a hora que eu quiser)...
Seguinte, eu comecei há cerca de um mês, a utilizar uma das novas funções do Excel 2016, UnirTexto(), que concatena textos com maestria.
Por razões que não vêm ao caso, tive que reinstalar meu Excel 2016 usando a conta MS da empresa e não a pessoal. Com isso consegui liberar os recursos como Power Pivot, Power View, Power Map, que era meu objetivo.
MAS, as funções UnirTexto(), Ses(), Concat() não estão mais presentes. Eu atualizei até a última versão, e mesmo assim nada. Deve ter algo ver com o tipo de assinatura, enfim... tb não vou entrar nesse mérito.
Como eu preciso da função e ela não existia, parei tudo. Eu sou desses, se o Excel não me atende, eu forço a me atender. Criei a UnirTexto() para ser usada como UDF.
Quem sabe o que é UDF e/ou tem um suplemento com funções personalizadas próprias, as famosas UDF *(User Defined Functions = Funções Definidas pelo Usuário), sabe bem como utilizar este código abaixo.
Também pode encontrar em anexo um modelo onde ela funciona.
O código está abaixo:
Option Explicit
'====================================================================
'Nome.........: UnirTexto *(Criada e incluída no Excel 2016, mas ausente nas outras versões)
'Data.........: 29/03/2016 (dmy)
'Autor........: Fernando Fernandes
'Contato......: Fernando.Fernandes@outlook.com.br
'Descrição....: Concatena todos os textos informados no último parâmetro,
' usando o delimitador para separá-los, ignorando ou não as células vazias
'Forum........: www.Planilhando.com.br
'====================================================================
Public Function UnirTexto(ByVal Delimitador As String, _
ByVal IgnorarVazios As Boolean, _
ParamArray Celulas() As Variant) As Variant
On Error GoTo TratarErro
Dim Intervalo As Variant
Dim Resultado As String
Dim i As Long
Dim j As Long
Dim k As Long
If UBound(Celulas, 1) < LBound(Celulas, 1) Then
UnirTexto = VBA.Conversion.CVErr(xlErrValue)
Exit Function
End If
For i = LBound(Celulas, 1) To UBound(Celulas, 1) Step 1
If VBA.Information.IsArray(Celulas(i)) Then
Intervalo = Celulas(i)
For j = LBound(Intervalo, 1) To UBound(Intervalo, 1) Step 1
For k = LBound(Intervalo, 2) To UBound(Intervalo, 2) Step 1
If Not VBA.Information.IsError(Intervalo(j, k)) Then
If Not VBA.Strings.Trim(Intervalo(j, k)) = vbNullString Then
Resultado = Resultado & Delimitador & Intervalo(j, k)
End If
End If
Next k
Next j
Else
If Not VBA.Information.IsError(Celulas(i)) Then
If Not VBA.Strings.Trim(Celulas(i)) = vbNullString Then
Resultado = Resultado & Delimitador & Celulas(i)
End If
End If
End If
Next i
If VBA.Strings.Len(Resultado) > VBA.Strings.Len(Delimitador) Then
Resultado = VBA.Strings.Right(Resultado, VBA.Strings.Len(Resultado) - VBA.Strings.Len(Delimitador))
End If
UnirTexto = Resultado
Exit Function
TratarErro:
UnirTexto = VBA.Conversion.CVErr(xlErrValue)
End Function
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 29/03/2016 3:03 pm