1.4k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich schreibe momentan ein Makro, welches zwei Tabellen miteinander vergleicht.

Ich möchte herrausfinden ob in einen der Beiden Tabellen Namen (erste Spalte) fehlen oder hinzugfügt wurden.
Falls ein Name fehlt soll die komplette Zellenreihe Orange markiert werden. (Also in der Tabelle, inder der zusätzliche Name steht)

Ich wäre über Hilfe wirklich sehr dankbar

MfG

Hans

4 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi hans ^^

ein beispiel

vergleich von worksheet 1 zu 2

gruss nighty

Option Explicit
Sub vergleich()
Dim Wks1xAchse As Long, Wks2xAchse As Long, xAchse As Long, yAchse As Long
Dim Wks1yAchse As Long, Wks2yAchse As Long, Zeilen As Long, Spalten As Long
Dim QuellSuche, ZielSuche As Range
Wks1xAchse = Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
Wks1yAchse = Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
Wks2xAchse = Worksheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Column
Wks2yAchse = Worksheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row
If Wks1xAchse > Wks2xAchse Then
xAchse = Wks1xAchse
Else
xAchse = Wks2xAchse
End If
If Wks1yAchse > Wks2yAchse Then
yAchse = Wks1yAchse
Else
yAchse = Wks2yAchse
End If
ReDim excel1(yAchse, xAchse) As Variant
ReDim excel2(yAchse, xAchse) As Variant
Worksheets(2).Select
excel2() = Range(Cells(1, 1), Cells(yAchse, xAchse))
Worksheets(1).Select
excel1() = Range(Cells(1, 1), Cells(yAchse, xAchse))
For Zeilen = 2 To yAchse
Set QuellSuche = Worksheets(2).Range("A1:A" & yAchse).Find(excel1(Zeilen, 1), Lookat:=xlWhole)
Set ZielSuche = Worksheets(1).Range("A1:A" & yAchse).Find(excel2(Zeilen, 1), Lookat:=xlWhole)
If Not QuellSuche Is Nothing Then
For Spalten = 2 To xAchse
If excel1(Zeilen, Spalten) <> "" And excel1(Zeilen, Spalten) <> excel2(QuellSuche.Row, Spalten) Then
Worksheets(1).Cells(Zeilen, Spalten).Interior.ColorIndex = 6
End If
Next Spalten
Else
Worksheets(1).Range(Worksheets(1).Cells(Zeilen, 1), Worksheets(1).Cells(Zeilen, xAchse)).Interior.ColorIndex = 3
End If
If Not ZielSuche Is Nothing Then
For Spalten = 2 To xAchse
If excel2(Zeilen, Spalten) <> "" And excel2(Zeilen, Spalten) <> excel1(ZielSuche.Row, Spalten) Then
Worksheets(2).Cells(Zeilen, Spalten).Interior.ColorIndex = 6
End If
Next Spalten
Else
Worksheets(2).Range(Worksheets(2).Cells(Zeilen, 1), Worksheets(2).Cells(Zeilen, xAchse)).Interior.ColorIndex = 3
End If
Next Zeilen
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

rot war fehlende zeile mit index auf spalte a

gelb war abweichende mit index auf spalte a

gruss nighty
0 Punkte
Beantwortet von
Das hast du jetzt doch nicht alles für mich geschrieben oder?!

Aufjedenfall sehr nett von dir danke. Es bringt mich schonmal weiter.

Lg
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi hans ^^

sollte der speicher nicht ausreichen,muesste ich es umschreiben
jenachdem wie groß die tabellen sind :-))

gruss nighty
...