27. januar 2007 - 11:18
												Der er
									4 kommentarer													og
					1 løsning									
									
		 
		
			
Sammenligning af to filer
			Hej Expert,
jeg har tidligere anvendt en macro, der kan sammenligne to excelark i Excel, jf. nedenstående. Her viser den gule felter, hvor der er forskel i arkene. Hvordan kan jeg lave en makro, der kan sammenligne to FILER i stedet, hvor der markeres med en farve, hvor der er forskelle i filerne?
Sub SammenlignArk()
ST = Now()
Dim AD As String, FArk As Variant, Sammenlign As Variant, i As Long, K As Integer, N As Integer
Sheets("Ark1").Cells.Interior.ColorIndex = xlNone
Sheets("Ark2").Cells.Interior.ColorIndex = xlNone
    AD = Sheets("Ark1").Range("A1").SpecialCells(xlLastCell).Address
    K = Sheets("Ark1").Range("A1").SpecialCells(xlLastCell).Column
    FArk = Sheets("Ark1").Range("a1:" & AD)
    
    Sammenlign = Sheets("Ark2").Range("a1:" & AD)
    
Application.ScreenUpdating = False
    For i = 1 To UBound(FArk)
        For N = 1 To K
          If FArk(i, N) <> Sammenlign(i, N) Then
        Sheets("Ark1").Cells(i, N).Interior.Color = vbYellow
        Sheets("Ark2").Cells(i, N).Interior.Color = vbYellow
      If FArk(i, N) <> "" And Sammenlign(i, N) = "" Then
      Sheets("Ark2").Cells(i, N).Interior.Color = vbRed
      End If
          End If
        Next N
    Next i
Application.ScreenUpdating = True
MsgBox K * UBound(FArk) & " celler tog  " & Format(Now - ST, "ss") & " sekunder"
End Sub
					
		
	 
		
								
					
				27. januar 2007 - 16:52
				#1
			 				
						
		 
		
			'Ret T1,T2 til dine filnavne samt evt. Ark1 og område A1:R30 til aktuelle
'subben farver matchende værdier blå
'OBS begge filer skal være åbne
Sub sammenlign()
Dim c, x
Dim tst As String
Dim tst2 As String
For Each c In Workbooks("T1").Worksheets("Ark1").Range("A1:R30").Cells
c.Activate
tst = c.Value
If tst = "" Then GoTo ny
For Each x In Workbooks("T2").Worksheets("Ark1").Range("A1:R30").Cells
tst2 = x.Value
If tst = tst2 Then ActiveCell.Font.ColorIndex = 3
Next
ny:
Next
End Sub
		
		
	 
	
		
								
					
				27. januar 2007 - 18:17
				#3
			 				
						
		 
		
			denne farver baggrund rød i celler som ikke matcher
obs sammenligner første ark (1) i begge filer ret 1 til 2 for næste ark
husk begge filer åbnet
Sub sammenlign()
Dim c, x
Dim tst As String
Dim tst2 As String
For Each c In Workbooks("T1").Worksheets(1).Range("A1:R30").Cells
If c.Value <> Workbooks("T2").Sheets(1).Range(c.Address) Then
Range(c.Address).Interior.ColorIndex = 3
Else
Range(c.Address).Interior.ColorIndex = xlNone
End If
Next
End Sub
		
		
	 
	
		
								
					
				28. januar 2007 - 14:15
				#4
						
		 
		
			Super - tusind tak. Det virker! Har tilføjet en lille smule, så den kan læse på alle sheets. Lægger du et svar ;)
Sub sammenlign()
Dim c, x
Dim tst As String
Dim tst2 As String
For i = 1 To Sheets.Count
    For Each c In Workbooks("T1").Sheets(i).Range("A1:R30").Cells
        If c.Value <> Workbooks("T2").Sheets(i).Range(c.Address) Then
            Workbooks("T1").Sheets(i).Range(c.Address).Interior.ColorIndex = 3
            Workbooks("T2").Sheets(i).Range(c.Address).Interior.ColorIndex = 3
        Else
            Workbooks("T1").Sheets(i).Range(c.Address).Interior.ColorIndex = xlNone
            Workbooks("T2").Sheets(i).Range(c.Address).Interior.ColorIndex = xlNone
        End If
    Next
Next
End Sub