Notifications
Clear all

Ajuda com Digito Separador

3 Posts
2 Usuários
0 Reactions
948 Visualizações
(@vainer)
Posts: 14
Active Member
Topic starter
 

Preciso ajustar o codigo abaixo para que ele SEMPRE insira depois do valor buscado o digito separador " ; " , da forma atual o digito é adicionado apenas para separar os valores buscados, ex: "T 1 ; T 2 ; T 3" ou no caso de uma busca com unico resultado fica assim Ex: "T 1". Preciso que fique assim "T 1 ; T 2 ; T 3 ;" e no caso de busca unica "T1 ;" no caso da busca não ter resultado (ficar vazia) a função esta ok e deixa a celula em branco (vazia), o problema esta apenas quando tem algo a ser buscado.

Porém após o "ultimo" item buscado pela função não adiciona o " ; " . Depois de rodar essa função eu preciso concatenar os resultados e ai fica tudo desconfigurado. Acredito que seja algo simples de se ajustar, mas não sei como proceder.

Function PROCVCONCAT(sProcura As String, vBD As Variant, lngOffset As Long)
    
    'Altere essa constante se quiser utilizar outro caractere como dígito separador.
    Const strSeparador As String = " ; "
    
    Dim l As Long
    Dim lngTotal As Long
    Dim strTemp() As String
    Dim varTemp As Variant
    
    'Transformo o parâmetro de entrada (que pode ser uma matriz ou uma Range) para trabalhar
    'apenas com uma Variant:
    varTemp = CVar(vBD)
    
    For l = LBound(varTemp, 1) To UBound(varTemp, 1)
        If varTemp(l, 1) = sProcura Then
            'Foi encontrada uma correspondência na primeira coluna do vetor de varTemp.
            lngTotal = lngTotal + 1
            ReDim Preserve strTemp(1 To lngTotal)
            strTemp(lngTotal) = varTemp(l, lngOffset)
        End If
    Next l
    
    If IsArrayEmpty(strTemp) Then
        'Caso não seja encontrada nenhuma correspondência, a função retornará uma célula vazia.
        PROCVCONCAT = ""
        Exit Function
    Else
        'Join concatena todas as correspondências encontradas do vetor strTemp:
        PROCVCONCAT = Join(strTemp, strSeparador)
    End If
    
End Function
 
Postado : 01/05/2015 2:01 pm
(@edcronos)
Posts: 1006
Noble Member
 

parece ser simples
mas poderia ter disposto de uma planilha com dados e a função aplicada
eu tentei entender oq como ela trabalha, mas estou com preguiça mental

mas pode tentar

'Join concatena todas as correspondências encontradas do vetor strTemp:
PROCVCONCAT = Join(strTemp, strSeparador) & ";"
ou
PROCVCONCAT = Join(strTemp, strSeparador) & strSeparador

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 01/05/2015 4:54 pm
(@vainer)
Posts: 14
Active Member
Topic starter
 

Obrigado Edcronos

PROCVCONCAT = Join(strTemp, strSeparador) & strSeparador

Funcionou perfeitamente :D, muito obrigado.

 
Postado : 01/05/2015 7:39 pm