compare e atualize planilhas

0

Por favor, eu preciso de ajuda com a planilha do excel aqui. Eu tenho duas planilhas, uma segurando os registros antigos e a outra segurando o registro atual. O que desejo fazer é desenvolver um código vba associado a um botão de comando, encontrar o exemplo abaixo, para que, quando o botão for clicado, os valores no registro antigo sejam atualizados automaticamente com base nos valores do novo registro. Para maior clareza, aqui está um instantâneo das planilhas.

Folha1 contém os registros antigos, que são ao vivo e podem ser vistos por mais de 100 usuários. sheet2 contém os novos registros, que estão sendo atualizados de várias fontes e qualquer campo / coln pode ser alterado pelos usuários do campo.

Campo1 em ambas as folhas mantém o campo de controle primário. Então, o que eu quero fazer é pegar cada valor de campo1 na planilha2 e, em seguida, pesquisá-lo no campo1 da planilha1, se o valor existir, quero comparar todos os registros correspondentes para que qualquer diferença seja copiada de planilha2 para planilha1 para todos os campos . Se o valor não estiver na folha1, quero copiar todo o valor e todos os registros associados na folha2 para a folha1. Invariavelmente, quero continuar atualizando a planilha1 com base na nova atualização na planilha2.

Espero ter me esclarecido o suficiente. Observe que a tabela de amostra é apenas uma versão simplificada, pois tenho 75 campos / coln e mais de 70.000 registros nas tabelas.

Obrigado pela sua ajuda e apoio antecipados para realizar isso.

**SHEET1**
Field1  Field2  Field3  Field4
Radms Street    781772  2   76
Mapre Street    781772  31  76
Catapilar Av    781727  1   90
Aveb Park   781727  56  91

**SHEET2**
Field1  Field2  Field3  Field4
Aveb Park   781727  56  91
Radms Street    781770  2   76
Solution Way    761111  67  1
Aknyt Road  781720  91  90
Mapre Street    781772  31  76
weedred Park    781781  23  61
Raven Road  781781  76  61
Catapilar Av    781720  21  76
    
por ondo 15.01.2014 / 07:50

1 resposta

0

Esse VBA funcionará, basta ajustar os intervalos para as células para que ele não seja executado indefinidamente. Também ajuste o loop for de i para refletir quantos campos você tem.

Este VBA assume que os valores estão na mesma ordem em ambas as planilhas e não substituem os espaços em branco, mas também não compara os valores .

Sub comparesheets()
Application.ScreenUpdating = False
Dim c As Range
Dim strFind As String
Dim rFound As Range
Dim i As Integer

For Each c In Sheets("sheet1").Range("A:A")
strFind = c.Value

    With Sheets("Sheet2").Range("A:A")
        Set rFound = .Find(What:=strFind, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
        If Not rFound Is Nothing Then
            For i = 1 To 4
                If rFound.Offset(, i) <> "" Then
                    c.Offset(, i) = rFound.Offset(, i)
                End If
            Next i

        End If
    End With

Next c
Application.ScreenUpdating = True
End Sub
    
por 27.01.2014 / 16:34