Hallo,
folgendes Problem quält mich schon eine ganze Zeit.
Ich habe 2 Arbeitsblätter (BlattA und BlattB), die verglichen werden sollen. Beide Blätter bestehen aus 6 Spalten. Allerdings kann die Anzahl der Zeilen variieren.
Die Daten sollen nun zeilenweise verglichen werden (also immer das Array A1:F1 usw). Allerdings ist die Reihenfolge unerheblich (Array A1:F1 in BlattA kann A20:F20 in BlattB entsprechen) und soll nicht farblich markiert werden.
Da das noch nicht genug Probleme machen würde, soll das, was in BlattB zuviel ist (nicht in BlattA vorkommt), in BlattA kopiert und grün markiert werden.
Daten, die in BlattA zuviel sind (also nicht im Blatt B vorkommen) sollen gelb markiert werden.
Aber schon allerhand Ansätze aber nicht funktioniert richtig. Hoffentlich kann mir hier jemand helfen.
Gruß !
Da das noch nicht genug Probleme machen würde, soll das, was
in BlattB zuviel ist (nicht in BlattA vorkommt), in BlattA
kopiert und grün markiert werden.
Daten, die in BlattA zuviel sind (also nicht im Blatt B
vorkommen) sollen gelb markiert werden.
Hi Shmiddy,
probiers mal so in einem Modul:
Option Explicit
Option Base 1
Sub tt()
Dim wsA As Worksheet, wsB As Worksheet, gefunden As Boolean, zeiA As Long, zeiB As Long
Dim SatzA() As String, SatzB() As String, n As Long, nn As Long
Set wsA = Worksheets("Tabelle1")
Set wsB = Worksheets("Tabelle2")
With wsA
.UsedRange.Interior.ColorIndex = xlNone
ReDim SatzA(.Range("A65536").End(xlUp).Row)
For zeiA = 1 To .Range("A65536").End(xlUp).Row
SatzA(zeiA) = Zusammen(.Cells(zeiA, 1))
Next zeiA
.UsedRange.Interior.ColorIndex = xlNone
ReDim SatzB(wsB.Range("A65536").End(xlUp).Row)
For zeiB = 1 To wsB.Range("A65536").End(xlUp).Row
SatzB(zeiB) = Zusammen(wsB.Cells(zeiB, 1))
Next zeiB
For n = 1 To UBound(SatzA)
gefunden = False
For nn = 1 To UBound(SatzB)
If SatzA(n) = SatzB(nn) Then
gefunden = True
Exit For
End If
Next nn
If gefunden = False Then .Range(.Cells(n, 1), .Cells(n, 6)).Interior.ColorIndex = 6 'gelb
Next n
For n = 1 To UBound(SatzB)
gefunden = False
For nn = 1 To UBound(SatzA)
If SatzB(n) = SatzA(nn) Then
gefunden = True
Exit For
End If
Next nn
If gefunden = False Then
wsB.Range(wsB.Cells(n, 1), wsB.Cells(n, 6)).Copy Destination:=.Cells(zeiA, 1)
.Range(.Cells(zeiA, 1), .Cells(zeiA, 6)).Interior.ColorIndex = 10 'grün
zeiA = zeiA + 1
End If
Next n
End With
End Sub
Function Zusammen(Zelle As Range) As String
Dim s As Integer, Spalten As Integer
Spalten = 6 'Spaltenanzahl
For s = 0 To Spalten - 1
Zusammen = Zusammen & Zelle.Offset(0, s)
Next s
End Function
Gruß
Reinhard
Vielen vielen Dank ! Musste nur noch ein End If ergänzen - jetzt funktionierts !!!