none
PROCURA VALOR EM LUGARES DISTINTOS RRS feed

  • Pergunta

  • Boa tarde!

    Preciso fazer uma busca  de valores  da seguinte forma.

    Comparar o valor da Plan 1 coluna F  com a plan 2  nas colunas G J M P a partir da linha 4.
    e trazer para plan1 coluna O o titulo das colunas G J M P  ( que está na linha 3 )onde foi encontrado o numero mais aproximado  do procurado.Plan 1

    


    terça-feira, 14 de novembro de 2017 14:07

Respostas

  • Option Explicit
    
    Sub VALORMAISPROXIMO()
        Dim K, INDICE As Integer
        Dim LINHA, LINHA2, LINHA3 As Long
        Dim NUMERO, NUMERO2, N, L As Double
        ' NA COLUNA 1 DA MATRIZ FICA A DIFERENÇA ENTRE O VALOR PROCURADO
        'E OS VALORES EXISTENTES NA PLANILHA2
        'NA COLUNA 2 DA MATRIZ FICA A COLUNA EM QUE ESTÁ O VALOR DA PLANILHA2
        Dim DIFERENCA(4 To 100000, 1 To 2) As Double
        'PREENCHE TODAS AS POSIÇÕES DA MATRIZ COM O VALOR 1 MILHÃO
        For LINHA = 4 To 100000
            DIFERENCA(LINHA, 1) = 1000000
        Next LINHA
        ' A PARTIR DA LINHA 2
        'PERCORRE A COLUNA F DA PLANILHA1
        For LINHA2 = 2 To ThisWorkbook.Sheets("Planilha1").Range("F" & Rows.Count).End(xlUp).Row + 1
    'SE A CÉLULA DA COLUNA F NÃO ESTIVER EM BRANCO
            If ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value <> "" Then
              'O VALOR PROCURADO ESTÁ NA COLUNA F
          
            NUMERO = ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value
            'A PARTIR DA LINHA 4
            'LINHA3 VAI CONTAR AS LINHAS DA MATRIZ DE DIFERENÇAS
            LINHA3 = 4
            'PERCORRE AS COLUNAS 7, 10, 13, 16 DA PLANILHA2
            For K = 7 To 16 Step 3
            'LINHA VAI CONTAR AS LINHAS DA PLANILHA2
            LINHA = 4
                'ENQUANTO HOUVER VALOR NA COLUNA
                While ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value <> ""
                    'NUMERO2 É O VALOR QUE ESTÁ NA PLANILHA2
                    NUMERO2 = CDbl(ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value)
                    'SE O NUMERO2 FOR MAIOR QUE O NÚMERO PROCURADO
                    If NUMERO2 > NUMERO Then
                        ' A DIFERENÇA VAI SER O NUMERO2 MENOS O NÚMERO PROCURADO
                        DIFERENCA(LINHA3, 1) = NUMERO2 - NUMERO
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                        
                    End If
                    'SE O NUMERO2 FOR MENOR QUE O NÚMERO PROCURADO
                    
                    If NUMERO2 < NUMERO Then
                        ' A DIFERENÇA VAI SER O NÚMERO PROCURADO MENOS O NUMERO2
                        
                        DIFERENCA(LINHA3, 1) = NUMERO - NUMERO2
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                        
                    End If
                    
                    'SE O NUMERO2 FOR IGUAL AO NÚMERO PROCURADO
                    
                    If NUMERO2 = NUMERO Then
                        'A DIFERENÇA É IGUAL A ZERO
                        DIFERENCA(LINHA3, 1) = 0
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                    End If
                    'PASSA PARA A PRÓXIMA LINHA NA PLANILHA2
                    LINHA = LINHA + 1
                Wend
               'VAI PARA PRÓXIMA COLUNA DA PLANILHA2
            Next K
             'APÓS COLOCAR NA MATRIZ TODAS AS DIFERENÇAS
                'VAI VERIFICAR QUAL É A MENOR DIFERENÇA
                'OU SEJA, QUAL VALOR ESTÁ MAIS PRÓXIMO
                'N VAI GUARDAR A MENOR DIFERENÇA
            N = DIFERENCA(4, 1)
            INDICE = 4
            L = 5
            While DIFERENCA(L, 1) <> 1000000
                
                If DIFERENCA(L, 1) < N Then
                    
                    N = DIFERENCA(L, 1)
                    INDICE = L
                End If
                L = L + 1
            Wend
            
            'NA COLUNA O DA PLANILHA1
            'ESCREVE O VALOR DA LINHA 3 PLANILHA2
            'DE ACORDO COM A COLUNA DA MENOR DIFERENÇA
            
            ThisWorkbook.Sheets("Planilha1").Range("O" & LINHA2).Value = ThisWorkbook.Sheets("Planilha2").Cells(3, DIFERENCA(INDICE, 2) - 1).Value
            End If
                    'PASSA PARA A PRÓXIMA LINHA DA COLUNA F DA PLANILHA1
    
        Next LINHA2
    End Sub
    
    
    


    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 sexta-feira, 17 de novembro de 2017 14:26
    • Marcado como Resposta CS_RODRIGO sexta-feira, 17 de novembro de 2017 16:01
    sexta-feira, 17 de novembro de 2017 14:25
  • Option Explicit
    
    Sub VALORMAISPROXIMO()
        Dim K, INDICE As Integer
        Dim LINHA, LINHA2, LINHA3 As Long
        Dim NUMERO, NUMERO2, N, L As Double
        ' NA COLUNA 1 DA MATRIZ FICA A DIFERENÇA ENTRE O VALOR PROCURADO
        'E OS VALORES EXISTENTES NA PLANILHA2
        'NA COLUNA 2 DA MATRIZ FICA A COLUNA EM QUE ESTÁ O VALOR DA PLANILHA2
        Dim DIFERENCA(4 To 100000, 1 To 2) As Double
        'PREENCHE TODAS AS POSIÇÕES DA MATRIZ COM O VALOR 1 MILHÃO
        For LINHA = 4 To 100000
            DIFERENCA(LINHA, 1) = 1000000
        Next LINHA
        ' A PARTIR DA LINHA 2
        'PERCORRE A COLUNA F DA PLANILHA1
        For LINHA2 = 2 To ThisWorkbook.Sheets("Planilha1").Range("F" & Rows.Count).End(xlUp).Row + 1
            'SE A CÉLULA DA COLUNA F NÃO ESTIVER EM BRANCO
            If ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value <> "" Then
                'O VALOR PROCURADO ESTÁ NA COLUNA F
                
                NUMERO = ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value
                'A PARTIR DA LINHA 4
                'LINHA3 VAI CONTAR AS LINHAS DA MATRIZ DE DIFERENÇAS
                LINHA3 = 4
                'PERCORRE AS COLUNAS 7, 10, 13, 16 DA PLANILHA2
                For K = 7 To 16 Step 3
                    'LINHA DA PLANILHA2
                    LINHA = 2
                    
                    'NUMERO2 É O VALOR QUE ESTÁ NA PLANILHA2
                    NUMERO2 = CDbl(ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value)
                    'SE O NUMERO2 FOR MAIOR QUE O NÚMERO PROCURADO
                    If NUMERO2 > NUMERO Then
                        ' A DIFERENÇA VAI SER O NUMERO2 MENOS O NÚMERO PROCURADO
                        DIFERENCA(LINHA3, 1) = NUMERO2 - NUMERO
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                        
                    End If
                    'SE O NUMERO2 FOR MENOR QUE O NÚMERO PROCURADO
                    
                    If NUMERO2 < NUMERO Then
                        ' A DIFERENÇA VAI SER O NÚMERO PROCURADO MENOS O NUMERO2
                        
                        DIFERENCA(LINHA3, 1) = NUMERO - NUMERO2
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                        
                    End If
                    
                    'SE O NUMERO2 FOR IGUAL AO NÚMERO PROCURADO
                    
                    If NUMERO2 = NUMERO Then
                        'A DIFERENÇA É IGUAL A ZERO
                        DIFERENCA(LINHA3, 1) = 0
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                    End If
                    
                    'VAI PARA PRÓXIMA COLUNA DA PLANILHA2
                Next K
                'APÓS COLOCAR NA MATRIZ TODAS AS DIFERENÇAS
                'VAI VERIFICAR QUAL É A MENOR DIFERENÇA
                'OU SEJA, QUAL VALOR ESTÁ MAIS PRÓXIMO
                'N VAI GUARDAR A MENOR DIFERENÇA
                N = DIFERENCA(4, 1)
                INDICE = 4
                L = 5
                While DIFERENCA(L, 1) <> 1000000
                    
                    If DIFERENCA(L, 1) < N Then
                        
                        N = DIFERENCA(L, 1)
                        INDICE = L
                    End If
                    L = L + 1
                Wend
                
                'NA COLUNA O DA PLANILHA1
                'ESCREVE O VALOR DA LINHA 3 PLANILHA2
                'DE ACORDO COM A COLUNA DA MENOR DIFERENÇA
                
                ThisWorkbook.Sheets("Planilha1").Range("O" & LINHA2).Value = ThisWorkbook.Sheets("Planilha2").Cells(3, DIFERENCA(INDICE, 2)).Value
            End If
            'PASSA PARA A PRÓXIMA LINHA DA COLUNA F DA PLANILHA1
            
        Next LINHA2
    End Sub
    
    
    
    


    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 sexta-feira, 17 de novembro de 2017 16:39
    • Marcado como Resposta CS_RODRIGO sexta-feira, 17 de novembro de 2017 17:47
    sexta-feira, 17 de novembro de 2017 16:37

Todas as Respostas

  • Anderson

    É realmente são distantes. Eu fiz um print so inicio do arquivo ele completo tem valores menores.

    Será que conseguimos uma logica para tal?

    quarta-feira, 15 de novembro de 2017 00:35

  • Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 quarta-feira, 15 de novembro de 2017 20:44
    quarta-feira, 15 de novembro de 2017 20:33

  • Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 quarta-feira, 15 de novembro de 2017 20:44
    quarta-feira, 15 de novembro de 2017 20:34
  • Option Explicit
    
    Sub VALORMAISPROXIMO()
        Dim K, INDICE As Integer
        Dim LINHA, LINHA2 As Long
        Dim NUMERO, NUMERO2, N, L As Double
        ' NA COLUNA 1 DA MATRIZ FICA A DIFERENÇA ENTRE O VALOR PROCURADO
        'E OS VALORES EXISTENTES NA PLANILHA2
        'NA COLUNA 2 DA MATRIZ FICA A COLUNA EM QUE ESTÁ O VALOR DA PLANILHA2
        Dim DIFERENCA(4 To 100000, 1 To 2) As Double
        ' A PARTIR DA LINHA 2
        LINHA2 = 2
        'PERCORRE A COLUNA F DA PLANILHA1
        While ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value <> ""
            'O VALOR PROCURADO ESTÁ NA COLUNA F
            NUMERO = ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value
            'A PARTIR DA LINHA 4
            LINHA = 4
            'PERCORRE AS COLUNAS 7, 10, 13, 16 DA PLANILHA2
            For K = 7 To 16 Step 3
                'ENQUANTO HOUVER VALOR NA COLUNA
                While ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value <> ""
                    'NUMERO2 É O VALOR QUE ESTÁ NA PLANILHA2
                    NUMERO2 = CDbl(ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value)
                    'SE O NUMERO2 FOR MAIOR QUE O NÚMERO PROCURADO
                    If NUMERO2 > NUMERO Then
                        ' A DIFERENÇA VAI SER O NUMERO2 MENOS O NÚMERO PROCURADO
                        DIFERENCA(LINHA, 1) = NUMERO2 - NUMERO
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        DIFERENCA(LINHA, 2) = K
                        
                    End If
                    'SE O NUMERO2 FOR MENOR QUE O NÚMERO PROCURADO
                    
                    If NUMERO2 < NUMERO Then
                        ' A DIFERENÇA VAI SER O NÚMERO PROCURADO MENOS O NUMERO2
                        
                        DIFERENCA(LINHA, 1) = NUMERO - NUMERO2
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA, 2) = K
                        
                    End If
                    
                    'SE O NUMERO2 FOR IGUAL AO NÚMERO PROCURADO
                    
                    If NUMERO2 = NUMERO Then
                        'A DIFERENÇA É IGUAL A ZERO
                        DIFERENCA(LINHA, 1) = 0
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA, 2) = K
                        
                    End If
                    'PASSA PARA A PRÓXIMA LINHA NA PLANILHA2
                    LINHA = LINHA + 1
                Wend
                'APÓS COLOCAR NA MATRIZ TODAS AS DIFERENÇAS
                'VAI VERIFICAR QUAL É A MENOR DIFERENÇA
                'OU SEJA, QUAL VALOR ESTÁ MAIS PRÓXIMO
                'N VAI GUARDAR A MENOR DIFERENÇA
                N = DIFERENCA(4, 1)
                INDICE = 4
                For L = 4 To LINHA - 1
                    
                    If DIFERENCA(L, 1) < N Then
                        
                        N = DIFERENCA(L, 1)
                        INDICE = L
                    End If
                    
                    
                Next L
                
                
            Next K
            'NA COLUNA O DA PLANILHA1
            'ESCREVE O VALOR DA LINHA 3 PLANILHA2
            'DE ACORDO COM A COLUNA DA MENOR DIFERENÇA
            'MENOS 1, POIS É A COLUNA ANTERIOR
            'JÁ QUE O VALOR ESTÁ NAS COLUNAS 7, 10, 13, 16
            'E O TÍTULO ESTÁ NAS COLUNAS 6, 9, 12, 15
            ThisWorkbook.Sheets("Planilha1").Range("O" & LINHA2).Value = ThisWorkbook.Sheets("Planilha2").Cells(3, DIFERENCA(INDICE, 2) - 1).Value
            'PASSA PARA A PRÓXIMA LINHA DA COLUNA F DA PLANILHA1
            LINHA2 = LINHA2 + 1
        Wend
    End Sub
    ESSE CÓDIGO JOGA OS TÍTULOS DAS COLUNAS F, I, L , O

    Anderson Diniz diniabr2011@gmail.com



    quarta-feira, 15 de novembro de 2017 20:36
  • Option Explicit
    
    Sub VALORMAISPROXIMO()
        Dim K, INDICE As Integer
        Dim LINHA, LINHA2 As Long
        Dim NUMERO, NUMERO2, N, L As Double
        ' NA COLUNA 1 DA MATRIZ FICA A DIFERENÇA ENTRE O VALOR PROCURADO
        'E OS VALORES EXISTENTES NA PLANILHA2
        'NA COLUNA 2 DA MATRIZ FICA A COLUNA EM QUE ESTÁ O VALOR DA PLANILHA2
        Dim DIFERENCA(4 To 100000, 1 To 2) As Double
        ' A PARTIR DA LINHA 2
        LINHA2 = 2
        'PERCORRE A COLUNA F DA PLANILHA1
        While ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value <> ""
            'O VALOR PROCURADO ESTÁ NA COLUNA F
            NUMERO = ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value
            'A PARTIR DA LINHA 4
            LINHA = 4
            'PERCORRE AS COLUNAS 7, 10, 13, 16 DA PLANILHA2
            For K = 7 To 16 Step 3
                'ENQUANTO HOUVER VALOR NA COLUNA
                While ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value <> ""
                    'NUMERO2 É O VALOR QUE ESTÁ NA PLANILHA2
                    NUMERO2 = CDbl(ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value)
                    'SE O NUMERO2 FOR MAIOR QUE O NÚMERO PROCURADO
                    If NUMERO2 > NUMERO Then
                        ' A DIFERENÇA VAI SER O NUMERO2 MENOS O NÚMERO PROCURADO
                        DIFERENCA(LINHA, 1) = NUMERO2 - NUMERO
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        DIFERENCA(LINHA, 2) = K
                        
                    End If
                    'SE O NUMERO2 FOR MENOR QUE O NÚMERO PROCURADO
                    
                    If NUMERO2 < NUMERO Then
                        ' A DIFERENÇA VAI SER O NÚMERO PROCURADO MENOS O NUMERO2
                        
                        DIFERENCA(LINHA, 1) = NUMERO - NUMERO2
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA, 2) = K
                        
                    End If
                    
                    'SE O NUMERO2 FOR IGUAL AO NÚMERO PROCURADO
                    
                    If NUMERO2 = NUMERO Then
                        'A DIFERENÇA É IGUAL A ZERO
                        DIFERENCA(LINHA, 1) = 0
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA, 2) = K
                        
                    End If
                    'PASSA PARA A PRÓXIMA LINHA NA PLANILHA2
                    LINHA = LINHA + 1
                Wend
                'APÓS COLOCAR NA MATRIZ TODAS AS DIFERENÇAS
                'VAI VERIFICAR QUAL É A MENOR DIFERENÇA
                'OU SEJA, QUAL VALOR ESTÁ MAIS PRÓXIMO
                'N VAI GUARDAR A MENOR DIFERENÇA
                N = DIFERENCA(4, 1)
                INDICE = 4
                For L = 4 To LINHA - 1
                    
                    If DIFERENCA(L, 1) < N Then
                        
                        N = DIFERENCA(L, 1)
                        INDICE = L
                    End If
                    
                    
                Next L
                
                
            Next K
            'NA COLUNA O DA PLANILHA1
            'ESCREVE O VALOR DA LINHA 3 PLANILHA2
            'DE ACORDO COM A COLUNA DA MENOR DIFERENÇA
            
            ThisWorkbook.Sheets("Planilha1").Range("O" & LINHA2).Value = ThisWorkbook.Sheets("Planilha2").Cells(3, DIFERENCA(INDICE, 2)).Value
            'PASSA PARA A PRÓXIMA LINHA DA COLUNA F DA PLANILHA1
            LINHA2 = LINHA2 + 1
        Wend
    End Sub
    
    
    
    ESSE CÓDIGO JOGA OS TÍTULOS DAS COLUNAS G, J, M, P

    Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 quarta-feira, 15 de novembro de 2017 20:44
    quarta-feira, 15 de novembro de 2017 20:42
  • Anderson, 

    Em geral é isso que preciso, mas ainda não atendeu porque mesmo eu alterando os valores a rotina me traz só o titulo do KIT A  quando na verdade logo a primeira linha deveria ser KIT B.

    Outro detalhe, eu conseguira  criar uma variável para determinar até que linha  ele deve executar.
    porque eu vi que está rodando até o fim do arquivo ou seja enquanto for <> "" mas como puxo esses valores de varias fontes com uma serie de se procv as vezes tenho uma linha vazia e na sequencia um valor mas a rotina já foi encerrada.

    Nessa variável de baixo pra cima encontraria a primeira célula diferente de vazio  gravaria o numero da linha  e executaria a partir da linha 2 até o valor da variável.

    coloquei duas imagens que retratam os casos citados.

    quinta-feira, 16 de novembro de 2017 22:04
  • Outra coisa , seria mais simples eu renomear a célula que está com o sub total como kit A  kit B  kit C  kit D e fazer as busca  da mesma forma, mas apenas nas células com os sub total e traria o nome da célula ou conteúdo de celula abaixo com o offiset(1,0).select onde ele achou o valor mais aproximado .

    Mesmo tendo linhas em vazias na coluna F plan1  eu busco na plan2  até a ultima linha realmente mas só nos sub totais por exemplo....

    Algo que você mesmo tinha questionado no inicio. segue imagens


    quinta-feira, 16 de novembro de 2017 22:17
  • Option Explicit
    
    Sub VALORMAISPROXIMO()
        Dim K, INDICE As Integer
        Dim LINHA, LINHA2, LINHA3 As Long
        Dim NUMERO, NUMERO2, N, L As Double
        ' NA COLUNA 1 DA MATRIZ FICA A DIFERENÇA ENTRE O VALOR PROCURADO
        'E OS VALORES EXISTENTES NA PLANILHA2
        'NA COLUNA 2 DA MATRIZ FICA A COLUNA EM QUE ESTÁ O VALOR DA PLANILHA2
        Dim DIFERENCA(4 To 100000, 1 To 2) As Double
        
        For LINHA = 4 To 100000
            DIFERENCA(LINHA, 1) = 1000000
        Next LINHA
        ' A PARTIR DA LINHA 2
        For LINHA2 = 2 To ThisWorkbook.Sheets("Planilha1").UsedRange.Rows.Count
            'PERCORRE A COLUNA F DA PLANILHA1
            ' While ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value <> ""
            'O VALOR PROCURADO ESTÁ NA COLUNA F
            NUMERO = ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value
            'A PARTIR DA LINHA 4
            
            LINHA3 = 4
            'PERCORRE AS COLUNAS 7, 10, 13, 16 DA PLANILHA2
            For K = 7 To 16 Step 3
            LINHA = 4
                'ENQUANTO HOUVER VALOR NA COLUNA
                While ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value <> ""
                    'NUMERO2 É O VALOR QUE ESTÁ NA PLANILHA2
                    NUMERO2 = CDbl(ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value)
                    'SE O NUMERO2 FOR MAIOR QUE O NÚMERO PROCURADO
                    If NUMERO2 > NUMERO Then
                        ' A DIFERENÇA VAI SER O NUMERO2 MENOS O NÚMERO PROCURADO
                        DIFERENCA(LINHA3, 1) = NUMERO2 - NUMERO
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                        
                    End If
                    'SE O NUMERO2 FOR MENOR QUE O NÚMERO PROCURADO
                    
                    If NUMERO2 < NUMERO Then
                        ' A DIFERENÇA VAI SER O NÚMERO PROCURADO MENOS O NUMERO2
                        
                        DIFERENCA(LINHA3, 1) = NUMERO - NUMERO2
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                        
                    End If
                    
                    'SE O NUMERO2 FOR IGUAL AO NÚMERO PROCURADO
                    
                    If NUMERO2 = NUMERO Then
                        'A DIFERENÇA É IGUAL A ZERO
                        DIFERENCA(LINHA3, 1) = 0
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                    End If
                    'PASSA PARA A PRÓXIMA LINHA NA PLANILHA2
                    LINHA = LINHA + 1
                Wend
                'APÓS COLOCAR NA MATRIZ TODAS AS DIFERENÇAS
                'VAI VERIFICAR QUAL É A MENOR DIFERENÇA
                'OU SEJA, QUAL VALOR ESTÁ MAIS PRÓXIMO
                'N VAI GUARDAR A MENOR DIFERENÇA
                
                
                
                
                
            Next K
            N = DIFERENCA(4, 1)
            INDICE = 4
            L = 5
            While DIFERENCA(L, 1) <> 1000000
                
                If DIFERENCA(L, 1) < N Then
                    
                    N = DIFERENCA(L, 1)
                    INDICE = L
                End If
                L = L + 1
            Wend
            
            'NA COLUNA O DA PLANILHA1
            'ESCREVE O VALOR DA LINHA 3 PLANILHA2
            'DE ACORDO COM A COLUNA DA MENOR DIFERENÇA
            
            ThisWorkbook.Sheets("Planilha1").Range("O" & LINHA2).Value = ThisWorkbook.Sheets("Planilha2").Cells(3, DIFERENCA(INDICE, 2) - 1).Value
            'PASSA PARA A PRÓXIMA LINHA DA COLUNA F DA PLANILHA1
            'LINHA2 = LINHA2 + 1
            'Wend
        Next LINHA2
    End Sub
    
    
    


    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 sexta-feira, 17 de novembro de 2017 00:33
    sexta-feira, 17 de novembro de 2017 00:32
  • Anderson certamente irei marcar como resposta.

    Porém, segue conforme informei ontem.

    Tenho linhas vazias  no meio da coluna F q impossibilita da rotina ir até o fim realmente, quando acha uma linha vazia por a rotina é interrompida.

    A questão de puxar apenas um kit foi resolvido está puxando o kit correto conforme  o valor encontrado.

    Com toda sua experiencia,  não seria melhor trabalhar a busca apenas com o total?

    sexta-feira, 17 de novembro de 2017 13:48
  • Option Explicit
    
    Sub VALORMAISPROXIMO()
        Dim K, INDICE As Integer
        Dim LINHA, LINHA2, LINHA3 As Long
        Dim NUMERO, NUMERO2, N, L As Double
        ' NA COLUNA 1 DA MATRIZ FICA A DIFERENÇA ENTRE O VALOR PROCURADO
        'E OS VALORES EXISTENTES NA PLANILHA2
        'NA COLUNA 2 DA MATRIZ FICA A COLUNA EM QUE ESTÁ O VALOR DA PLANILHA2
        Dim DIFERENCA(4 To 100000, 1 To 2) As Double
        
        For LINHA = 4 To 100000
            DIFERENCA(LINHA, 1) = 1000000
        Next LINHA
        ' A PARTIR DA LINHA 2
        For LINHA2 = 2 To ThisWorkbook.Sheets("Planilha1").Range("F" & Rows.Count).End(xlUp).Row + 1
            'PERCORRE A COLUNA F DA PLANILHA1
            ' While ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value <> ""
            'O VALOR PROCURADO ESTÁ NA COLUNA F
            NUMERO = ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value
            'A PARTIR DA LINHA 4
            
            LINHA3 = 4
            'PERCORRE AS COLUNAS 7, 10, 13, 16 DA PLANILHA2
            For K = 7 To 16 Step 3
            LINHA = 4
                'ENQUANTO HOUVER VALOR NA COLUNA
                While ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value <> ""
                    'NUMERO2 É O VALOR QUE ESTÁ NA PLANILHA2
                    NUMERO2 = CDbl(ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value)
                    'SE O NUMERO2 FOR MAIOR QUE O NÚMERO PROCURADO
                    If NUMERO2 > NUMERO Then
                        ' A DIFERENÇA VAI SER O NUMERO2 MENOS O NÚMERO PROCURADO
                        DIFERENCA(LINHA3, 1) = NUMERO2 - NUMERO
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                        
                    End If
                    'SE O NUMERO2 FOR MENOR QUE O NÚMERO PROCURADO
                    
                    If NUMERO2 < NUMERO Then
                        ' A DIFERENÇA VAI SER O NÚMERO PROCURADO MENOS O NUMERO2
                        
                        DIFERENCA(LINHA3, 1) = NUMERO - NUMERO2
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                        
                    End If
                    
                    'SE O NUMERO2 FOR IGUAL AO NÚMERO PROCURADO
                    
                    If NUMERO2 = NUMERO Then
                        'A DIFERENÇA É IGUAL A ZERO
                        DIFERENCA(LINHA3, 1) = 0
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                    End If
                    'PASSA PARA A PRÓXIMA LINHA NA PLANILHA2
                    LINHA = LINHA + 1
                Wend
                'APÓS COLOCAR NA MATRIZ TODAS AS DIFERENÇAS
                'VAI VERIFICAR QUAL É A MENOR DIFERENÇA
                'OU SEJA, QUAL VALOR ESTÁ MAIS PRÓXIMO
                'N VAI GUARDAR A MENOR DIFERENÇA
                
                
                
                
                
            Next K
            N = DIFERENCA(4, 1)
            INDICE = 4
            L = 5
            While DIFERENCA(L, 1) <> 1000000
                
                If DIFERENCA(L, 1) < N Then
                    
                    N = DIFERENCA(L, 1)
                    INDICE = L
                End If
                L = L + 1
            Wend
            
            'NA COLUNA O DA PLANILHA1
            'ESCREVE O VALOR DA LINHA 3 PLANILHA2
            'DE ACORDO COM A COLUNA DA MENOR DIFERENÇA
            
            ThisWorkbook.Sheets("Planilha1").Range("O" & LINHA2).Value = ThisWorkbook.Sheets("Planilha2").Cells(3, DIFERENCA(INDICE, 2) - 1).Value
            'PASSA PARA A PRÓXIMA LINHA DA COLUNA F DA PLANILHA1
            'LINHA2 = LINHA2 + 1
            'Wend
        Next LINHA2
    End Sub
    
    
    


    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    sexta-feira, 17 de novembro de 2017 13:58
  • Option Explicit
    
    Sub VALORMAISPROXIMO()
        Dim K, INDICE As Integer
        Dim LINHA, LINHA2, LINHA3 As Long
        Dim NUMERO, NUMERO2, N, L As Double
        ' NA COLUNA 1 DA MATRIZ FICA A DIFERENÇA ENTRE O VALOR PROCURADO
        'E OS VALORES EXISTENTES NA PLANILHA2
        'NA COLUNA 2 DA MATRIZ FICA A COLUNA EM QUE ESTÁ O VALOR DA PLANILHA2
        Dim DIFERENCA(4 To 100000, 1 To 2) As Double
        
        For LINHA = 4 To 100000
            DIFERENCA(LINHA, 1) = 1000000
        Next LINHA
        ' A PARTIR DA LINHA 2
        For LINHA2 = 2 To ThisWorkbook.Sheets("Planilha1").Range("F" & Rows.Count).End(xlUp).Row + 1
            'PERCORRE A COLUNA F DA PLANILHA1
            ' While ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value <> ""
            'O VALOR PROCURADO ESTÁ NA COLUNA F
            If ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value <> "" Then
            NUMERO = ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value
            'A PARTIR DA LINHA 4
            
            LINHA3 = 4
            'PERCORRE AS COLUNAS 7, 10, 13, 16 DA PLANILHA2
            For K = 7 To 16 Step 3
            LINHA = 4
                'ENQUANTO HOUVER VALOR NA COLUNA
                While ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value <> ""
                    'NUMERO2 É O VALOR QUE ESTÁ NA PLANILHA2
                    NUMERO2 = CDbl(ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value)
                    'SE O NUMERO2 FOR MAIOR QUE O NÚMERO PROCURADO
                    If NUMERO2 > NUMERO Then
                        ' A DIFERENÇA VAI SER O NUMERO2 MENOS O NÚMERO PROCURADO
                        DIFERENCA(LINHA3, 1) = NUMERO2 - NUMERO
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                        
                    End If
                    'SE O NUMERO2 FOR MENOR QUE O NÚMERO PROCURADO
                    
                    If NUMERO2 < NUMERO Then
                        ' A DIFERENÇA VAI SER O NÚMERO PROCURADO MENOS O NUMERO2
                        
                        DIFERENCA(LINHA3, 1) = NUMERO - NUMERO2
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                        
                    End If
                    
                    'SE O NUMERO2 FOR IGUAL AO NÚMERO PROCURADO
                    
                    If NUMERO2 = NUMERO Then
                        'A DIFERENÇA É IGUAL A ZERO
                        DIFERENCA(LINHA3, 1) = 0
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                    End If
                    'PASSA PARA A PRÓXIMA LINHA NA PLANILHA2
                    LINHA = LINHA + 1
                Wend
                'APÓS COLOCAR NA MATRIZ TODAS AS DIFERENÇAS
                'VAI VERIFICAR QUAL É A MENOR DIFERENÇA
                'OU SEJA, QUAL VALOR ESTÁ MAIS PRÓXIMO
                'N VAI GUARDAR A MENOR DIFERENÇA
                
                
                
                
                
            Next K
            N = DIFERENCA(4, 1)
            INDICE = 4
            L = 5
            While DIFERENCA(L, 1) <> 1000000
                
                If DIFERENCA(L, 1) < N Then
                    
                    N = DIFERENCA(L, 1)
                    INDICE = L
                End If
                L = L + 1
            Wend
            
            'NA COLUNA O DA PLANILHA1
            'ESCREVE O VALOR DA LINHA 3 PLANILHA2
            'DE ACORDO COM A COLUNA DA MENOR DIFERENÇA
            
            ThisWorkbook.Sheets("Planilha1").Range("O" & LINHA2).Value = ThisWorkbook.Sheets("Planilha2").Cells(3, DIFERENCA(INDICE, 2) - 1).Value
            'PASSA PARA A PRÓXIMA LINHA DA COLUNA F DA PLANILHA1
            'LINHA2 = LINHA2 + 1
            'Wend
            End If
        Next LINHA2
    End Sub
    
    
    


    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    sexta-feira, 17 de novembro de 2017 14:01
  • Option Explicit
    
    Sub VALORMAISPROXIMO()
        Dim K, INDICE As Integer
        Dim LINHA, LINHA2, LINHA3 As Long
        Dim NUMERO, NUMERO2, N, L As Double
        ' NA COLUNA 1 DA MATRIZ FICA A DIFERENÇA ENTRE O VALOR PROCURADO
        'E OS VALORES EXISTENTES NA PLANILHA2
        'NA COLUNA 2 DA MATRIZ FICA A COLUNA EM QUE ESTÁ O VALOR DA PLANILHA2
        Dim DIFERENCA(4 To 100000, 1 To 2) As Double
        'PREENCHE TODAS AS POSIÇÕES DA MATRIZ COM O VALOR 1 MILHÃO
        For LINHA = 4 To 100000
            DIFERENCA(LINHA, 1) = 1000000
        Next LINHA
        ' A PARTIR DA LINHA 2
        'PERCORRE A COLUNA F DA PLANILHA1
        For LINHA2 = 2 To ThisWorkbook.Sheets("Planilha1").Range("F" & Rows.Count).End(xlUp).Row + 1
    'SE A CÉLULA DA COLUNA F NÃO ESTIVER EM BRANCO
            If ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value <> "" Then
              'O VALOR PROCURADO ESTÁ NA COLUNA F
          
            NUMERO = ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value
            'A PARTIR DA LINHA 4
            'LINHA3 VAI CONTAR AS LINHAS DA MATRIZ DE DIFERENÇAS
            LINHA3 = 4
            'PERCORRE AS COLUNAS 7, 10, 13, 16 DA PLANILHA2
            For K = 7 To 16 Step 3
            'LINHA VAI CONTAR AS LINHAS DA PLANILHA2
            LINHA = 4
                'ENQUANTO HOUVER VALOR NA COLUNA
                While ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value <> ""
                    'NUMERO2 É O VALOR QUE ESTÁ NA PLANILHA2
                    NUMERO2 = CDbl(ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value)
                    'SE O NUMERO2 FOR MAIOR QUE O NÚMERO PROCURADO
                    If NUMERO2 > NUMERO Then
                        ' A DIFERENÇA VAI SER O NUMERO2 MENOS O NÚMERO PROCURADO
                        DIFERENCA(LINHA3, 1) = NUMERO2 - NUMERO
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                        
                    End If
                    'SE O NUMERO2 FOR MENOR QUE O NÚMERO PROCURADO
                    
                    If NUMERO2 < NUMERO Then
                        ' A DIFERENÇA VAI SER O NÚMERO PROCURADO MENOS O NUMERO2
                        
                        DIFERENCA(LINHA3, 1) = NUMERO - NUMERO2
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                        
                    End If
                    
                    'SE O NUMERO2 FOR IGUAL AO NÚMERO PROCURADO
                    
                    If NUMERO2 = NUMERO Then
                        'A DIFERENÇA É IGUAL A ZERO
                        DIFERENCA(LINHA3, 1) = 0
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                    End If
                    'PASSA PARA A PRÓXIMA LINHA NA PLANILHA2
                    LINHA = LINHA + 1
                Wend
               'VAI PARA PRÓXIMA COLUNA DA PLANILHA2
            Next K
             'APÓS COLOCAR NA MATRIZ TODAS AS DIFERENÇAS
                'VAI VERIFICAR QUAL É A MENOR DIFERENÇA
                'OU SEJA, QUAL VALOR ESTÁ MAIS PRÓXIMO
                'N VAI GUARDAR A MENOR DIFERENÇA
            N = DIFERENCA(4, 1)
            INDICE = 4
            L = 5
            While DIFERENCA(L, 1) <> 1000000
                
                If DIFERENCA(L, 1) < N Then
                    
                    N = DIFERENCA(L, 1)
                    INDICE = L
                End If
                L = L + 1
            Wend
            
            'NA COLUNA O DA PLANILHA1
            'ESCREVE O VALOR DA LINHA 3 PLANILHA2
            'DE ACORDO COM A COLUNA DA MENOR DIFERENÇA
            
            ThisWorkbook.Sheets("Planilha1").Range("O" & LINHA2).Value = ThisWorkbook.Sheets("Planilha2").Cells(3, DIFERENCA(INDICE, 2) - 1).Value
            End If
                    'PASSA PARA A PRÓXIMA LINHA DA COLUNA F DA PLANILHA1
    
        Next LINHA2
    End Sub
    
    
    


    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 sexta-feira, 17 de novembro de 2017 14:26
    • Marcado como Resposta CS_RODRIGO sexta-feira, 17 de novembro de 2017 16:01
    sexta-feira, 17 de novembro de 2017 14:25
  • Anderson, PERFEITO!

    PARABÉNS POR TODO CONHECIMENTO E PROATIVIDADE.

    Se caso eu precise procurar os números da planilha1 coluna F em relação ao valor total invés de percorrer as colunas como na resposta anterior  eu percorrer apenas as células separadas em preto  G2 J2 M2 e  devolver  o texto a baixo G3 J3 M3 onde a diferença para o valor procurado for menor.

    Segue imagem.

    sexta-feira, 17 de novembro de 2017 16:25
  • Option Explicit
    
    Sub VALORMAISPROXIMO()
        Dim K, INDICE As Integer
        Dim LINHA, LINHA2, LINHA3 As Long
        Dim NUMERO, NUMERO2, N, L As Double
        ' NA COLUNA 1 DA MATRIZ FICA A DIFERENÇA ENTRE O VALOR PROCURADO
        'E OS VALORES EXISTENTES NA PLANILHA2
        'NA COLUNA 2 DA MATRIZ FICA A COLUNA EM QUE ESTÁ O VALOR DA PLANILHA2
        Dim DIFERENCA(4 To 100000, 1 To 2) As Double
        'PREENCHE TODAS AS POSIÇÕES DA MATRIZ COM O VALOR 1 MILHÃO
        For LINHA = 4 To 100000
            DIFERENCA(LINHA, 1) = 1000000
        Next LINHA
        ' A PARTIR DA LINHA 2
        'PERCORRE A COLUNA F DA PLANILHA1
        For LINHA2 = 2 To ThisWorkbook.Sheets("Planilha1").Range("F" & Rows.Count).End(xlUp).Row + 1
            'SE A CÉLULA DA COLUNA F NÃO ESTIVER EM BRANCO
            If ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value <> "" Then
                'O VALOR PROCURADO ESTÁ NA COLUNA F
                
                NUMERO = ThisWorkbook.Sheets("Planilha1").Range("F" & LINHA2).Value
                'A PARTIR DA LINHA 4
                'LINHA3 VAI CONTAR AS LINHAS DA MATRIZ DE DIFERENÇAS
                LINHA3 = 4
                'PERCORRE AS COLUNAS 7, 10, 13, 16 DA PLANILHA2
                For K = 7 To 16 Step 3
                    'LINHA DA PLANILHA2
                    LINHA = 2
                    
                    'NUMERO2 É O VALOR QUE ESTÁ NA PLANILHA2
                    NUMERO2 = CDbl(ThisWorkbook.Sheets("Planilha2").Cells(LINHA, K).Value)
                    'SE O NUMERO2 FOR MAIOR QUE O NÚMERO PROCURADO
                    If NUMERO2 > NUMERO Then
                        ' A DIFERENÇA VAI SER O NUMERO2 MENOS O NÚMERO PROCURADO
                        DIFERENCA(LINHA3, 1) = NUMERO2 - NUMERO
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                        
                    End If
                    'SE O NUMERO2 FOR MENOR QUE O NÚMERO PROCURADO
                    
                    If NUMERO2 < NUMERO Then
                        ' A DIFERENÇA VAI SER O NÚMERO PROCURADO MENOS O NUMERO2
                        
                        DIFERENCA(LINHA3, 1) = NUMERO - NUMERO2
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                        
                    End If
                    
                    'SE O NUMERO2 FOR IGUAL AO NÚMERO PROCURADO
                    
                    If NUMERO2 = NUMERO Then
                        'A DIFERENÇA É IGUAL A ZERO
                        DIFERENCA(LINHA3, 1) = 0
                        'NA COLUNA 2 DA MATRIZ, FICA O NÚMERO DA COLUNA DO NUMERO2
                        
                        DIFERENCA(LINHA3, 2) = K
                        LINHA3 = LINHA3 + 1
                    End If
                    
                    'VAI PARA PRÓXIMA COLUNA DA PLANILHA2
                Next K
                'APÓS COLOCAR NA MATRIZ TODAS AS DIFERENÇAS
                'VAI VERIFICAR QUAL É A MENOR DIFERENÇA
                'OU SEJA, QUAL VALOR ESTÁ MAIS PRÓXIMO
                'N VAI GUARDAR A MENOR DIFERENÇA
                N = DIFERENCA(4, 1)
                INDICE = 4
                L = 5
                While DIFERENCA(L, 1) <> 1000000
                    
                    If DIFERENCA(L, 1) < N Then
                        
                        N = DIFERENCA(L, 1)
                        INDICE = L
                    End If
                    L = L + 1
                Wend
                
                'NA COLUNA O DA PLANILHA1
                'ESCREVE O VALOR DA LINHA 3 PLANILHA2
                'DE ACORDO COM A COLUNA DA MENOR DIFERENÇA
                
                ThisWorkbook.Sheets("Planilha1").Range("O" & LINHA2).Value = ThisWorkbook.Sheets("Planilha2").Cells(3, DIFERENCA(INDICE, 2)).Value
            End If
            'PASSA PARA A PRÓXIMA LINHA DA COLUNA F DA PLANILHA1
            
        Next LINHA2
    End Sub
    
    
    
    


    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 sexta-feira, 17 de novembro de 2017 16:39
    • Marcado como Resposta CS_RODRIGO sexta-feira, 17 de novembro de 2017 17:47
    sexta-feira, 17 de novembro de 2017 16:37
  • EXCELENTE ANDERSON!!!

    OBRIGADO!
    sexta-feira, 17 de novembro de 2017 17:48