Ir ao conteúdo

Excel VBA - Usando dicionário Excel


Ir à solução Resolvido por Scofieldgyn,

Posts recomendados

Postado

Boa Dia! Precisava fazer um dicionário, com as seguintes condições:

-Ir no Sheet1 e procurar a coluna "Customer" e pegar de 1 em 1 e pesquisar no Sheet2 por Dicionário

- Sendo a chave o nome "inBiz" (coluna A do sheet2) e o valor: "AG" (coluna B)

- Quando encontrasse o valor necessário, retornar o valor para o sheet1 coluna "Retornar aqui" (sendo as respostas correspondente a coluna "Customer")

-Se não encontrar o valor procurado, retornar "Not found" e pintar de azul, por exemplo. 

 

Ex. Clube.xlsx

Postado

@Scofieldgyn parece funcionar perfeitamente, mas tem como passar para codigo VBA procurando pelo "nome" e não pela celula/coluna?

 

ex. eu acho que para fazer o iferror ficaria assim mais ou menos

Dim varIfError As Variant
varIfError = WorksheetFunction.IfError(0, "Not Found")

 

Postado

@isabela queirozSegue:

 

Sub PesquisarValores()
 
Dim UL As Long, Cust As Long, rtaqui As Long
Dim Col As Variant

    Cust = Rows(2).Find("Customer").Column
    rtaqui = Rows(2).Find("Retornar aqui").Column
    UL = Cells(Cells.Rows.Count, Cust).End(xlUp).Row
    
    For inicio = 3 To UL
        Col = Cells(inicio, Cust).Value
        resultado_procv = Application.VLookup(Col, Sheets("Sheet2").Range("A:B"), 2, False)
        If IsError(resultado_procv) Then
            Cells(inicio, rtaqui).Value = "Not found"
        Else
            Cells(inicio, rtaqui).Value = resultado_procv
        End If
    Next inicio
 
End Sub

 

Postado

@isabela queirozvocê pode fazer manualmente por formatação condicional.

 

mas caso não queira manualmente, segue o código modificado.

Sub PesquisarValores()
 
Dim UL As Long, Cust As Long, rtaqui As Long
Dim Col As Variant

    Cust = Rows(2).Find("Customer").Column
    rtaqui = Rows(2).Find("Retornar aqui").Column
    UL = Cells(Cells.Rows.Count, Cust).End(xlUp).Row
    
    For inicio = 3 To UL
        Cells(inicio, rtaqui).FormatConditions.Delete
        Col = Cells(inicio, Cust).Value
        resultado_procv = Application.VLookup(Col, Sheets("Sheet2").Range("A:B"), 2, False)
        If IsError(resultado_procv) Then
            Cells(inicio, rtaqui).Value = "Not found"
        Else
            Cells(inicio, rtaqui).Value = resultado_procv
        End If
    Next inicio

    For Each palavra In Selection
        If palavra.Value = "Not found" Then
        palavra.Interior.Color = vbBlue
        palavra.Font.Color = vbWhite
        Else
        End If
    Next palavra

End Sub

 

  • Solução
Postado

@isabela queiroz

 

segue:

 

Sub PesquisarValores()
 
Dim UL As Long, Cust As Long, rtaqui As Long
Dim Col As Variant


    Cust = Rows(2).Find("Customer").Column
    rtaqui = Rows(2).Find("Retornar aqui").Column
    UL = Cells(Cells.Rows.Count, Cust).End(xlUp).Row
    
    Range("B3:B" & Cust).ClearContents

    For inicio = 3 To UL
        Col = Cells(inicio, Cust).Value
        resultado_procv = Application.VLookup(Col, Sheets("Sheet2").Range("A:B"), 2, False)
        If IsError(resultado_procv) Then
            Cells(inicio, rtaqui).Value = "Not found"
        Else
            Cells(inicio, rtaqui).Value = resultado_procv
        End If
    Next inicio

    Call ColorirCélula
    
End Sub

Sub ColorirCélula()

Dim xRg As Range
Dim xFRg As Range
Dim xStrAddress As String
Dim xVrt As Variant

    xVrt = "Not Found"
    If xVrt <> "" Then
    Set xFRg = ActiveSheet.Cells.Find(what:=xVrt)
        If xFRg Is Nothing Then
        MsgBox prompt:="Valor não encontrado" & vbOK
        Exit Sub
        End If
    xStrAddress = xFRg.Address
    Set xRg = xFRg
        Do
        Set xFRg = ActiveSheet.Cells.FindNext(After:=xFRg)
        Set xRg = Application.Union(xRg, xFRg)
        Loop Until xFRg.Address = xStrAddress
        If xRg.Count > 0 Then
        xRg.Interior.ColorIndex = 23
        End If
    End If
End Sub

 

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!