• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

alavanka

Como comparar rows em VBA

2 mensagens neste tópico


Viva,

Estou a tentar criar uma macro que me compare dados de dois ficheiros diferentes, mas com as mesmas colunas e o mesmo tipo de dados, através de uma 3ª sheet (Output).

Tenho um ficheiro master com toda a informação e de vez em quando recebo ficheiros com partes do ficheiro master com algumas alterações (chamemos-lhe o ficheiro input). Estas alterações podem ser do tipo:

1. Criação de novas linhas

2. Remoção de linhas

3. Alteração de linhas

A macro que eu criei só me compara o nº de linhas no master que contenha o ficheiro input.

Por exemplo: caso o ficheiro input tenha 30 linhas de dados e o ficheiro master tenha 500 a macro só me vai comparar as primeiras 30 linhas do ficheiro master. O pior de tudo é que estas 30 linhas não são as linhas que eu desejava comparar.

O que eu pretendo é ajustar a minha macro no sentido que procure no ficheiro master a linha correspondente procurando por um campo específico (ex:nome de pessoa, equipa, etc.). Como é que eu posso comparar linhas de excel, procurando por um campo específico?

Alguem me pode ajudar? Agradecia MUITISSIMO!!!!

Uma parte da minha pseudo-macro...

For i = 2 To 5000

For j = 1 To 26

If ss("Input").Cells(i, j + 1) <> ss("Master").Cells(i, j + 1) Then

    ss("Output").Cells(i, j + 1) = ss("Input").Cells(i, j + 1)

   

    Else

   

  ss("output").Cells(i, j + 1) = ""

   

  End If

 

  End If

Next

Next

Abraço e beijos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Diria que podes utilizar algo deste género


'Supondo que o Master é igual ao Output

i = 1               'supondo que começa na 1ª linha

Do

    For j = 1 To TamMaster
    
        If Sheets("Input").Cells(i, k) = Sheets("Master").Cells(j, l) Then
                                        'k e l colunas do campo especifico que queres procurar
        
            Sheets("Output").Cells(j, l) = Sheets("Input").Cells(i, k)
        
        End If
    
    Next j
    
    i = i + 1               'passa para a linha seguinte

Loop Until i = TamInput + 1 'até atingir o tamanho max do ficheiro de input

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora