Stránka 1 z 1

Porovnání 2 excel souborů

Napsal: 05 úno 2013 10:44
od reklus
Zdravím,

vím, že toto téma tu je mockrát, ale ani jedno se přímo nehodí na můj problém, takže se předem omlouvám za založení nového tématu.
Používám makro k poorvnání dvou excel souborů, které při shodě přepíše hodnotu z zdrojového souboru do cílového. Jelikož nejsem odborník, chtěl jsem poprosit, zda by šlo do tohoto makra dodělat aby při shodě se daná aktualizovaná buňka obarvila barvou??? Případně jak by dané makro vypadalo upravené?
Předem mockrát děkuji

Kód: Vybrat vše

Sub Porovnej()

  Dim BlkA As Range, BlkB As Range
  Dim CllA As Range, CllB As Range
  Dim zdrojsesit As Object, cilsesit As Object
  Dim frstAddr As String
  Dim shoda, radek As Integer
 
  On Error GoTo err
  ' definovani bloku bunek na listech (sesit, list, oblast)
  Set zdrojsesit = Workbooks("zdroj.xls").Worksheets(1)
  Set cilsesit = Workbooks("cil.XLS").Worksheets(1)
 
  zdrojsesit.Activate
   Set BlkA = zdrojsesit.Range(("a1:a") & Cells(Rows.Count, "a").End(xlUp).Row)
  cilsesit.Activate
   Set BlkB = cilsesit.Range(("a1:a") & Cells(Rows.Count, "a").End(xlUp).Row)
 
  shoda = 0 ' pocet shod
 
  Application.ScreenUpdating = False

      ' prochazet BlkA
      For Each CllA In BlkA.Cells
        ' prohledavat BlkB
        With BlkB
          Set CllB = .Find(CllA.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
          If Not CllB Is Nothing Then  ' pri shode porovnat sloupce
            frstAddr = CllB.Address
            Do
              If CllA.Offset(0, 0).Value = "" Then
                 GoTo dalsi  ' skoc na dalsi hodnotu v bloku A
              End If
              If CllB.Offset(0, 0).Value = CllA.Offset(0, 0).Value Then  ' pri shode zkopiruj
                 With zdrojsesit
                   .Rows(CllA.Row).Copy
                 End With
                 With cilsesit
                   .Rows(CllB.Row).PasteSpecial
                 End With
                 Application.CutCopyMode = False
                   
                 shoda = shoda + 1
                 GoTo dalsi ' skoc na dalsi hodnotu v bloku A
              End If
              Set CllB = .FindNext(CllB)

            Loop While CllB.Address <> frstAddr
          End If
dalsi:
        End With
      Next CllA
     
  Application.ScreenUpdating = True

  MsgBox "   Uff, nasel jsem " & shoda & " shod.", vbInformation

  ' odstranit objektove promenne
  Set zdrojsesit = Nothing
  Set cilsesit = Nothing
  Set CllB = Nothing
  Set CllA = Nothing
  Set BlkB = Nothing
  Set BlkA = Nothing
End
err:
MsgBox " !! Neni otevřen jeden ze sešitů !! ", vbCritical
End Sub

Re: Porovnání 2 excel souborů

Napsal: 05 úno 2013 17:33
od cmuch
Vítej na PC-Help

V kodu uprav tento kousek

Kód: Vybrat vše

 
With cilsesit
      .Rows(CllB.Row).PasteSpecial
      .Rows(CllB.Row).Interior.Color = RGB(0, 255, 0)
End With

kde se řádek podbarví sv.zelenou. Popřípadě douprav na barvu jakou potřebuješ.