Clever-Excel-Forum

Normale Version: VBA Tabellen vergleichen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute.

Ich habe ein komplexes Problem und bekomme es einfach nicht auf die Kette.
Ich habe zwei Tabellen "LV_MASTER" und "LV_KUNDE" und ich möchte jetzt meinen Master an den Kunden anpassen, indem ich einfach die Positionen, die der Kunde nicht beinhaltet, in meinem Master ausblende.
Ich habe dazu auch schon etwas geschrieben, aber das Ergebnis ist leider nicht so astrein

Code:
Sub LV(control As IRibbonControl)


Dim rng As Range, rngF As Range, rngFind As Range, rngDel As Range
Dim objSh1 As Worksheet, objSh2 As Worksheet


Set objSh1 = Sheets("LV_MASTER") 'Tabelle in der gesucht und ausgeblendet wird
Set objSh2 = Sheets("LV_KUNDE") 'Tabelle mit Vergleichsdaten


With objSh1
 Set rngFind = .Range("A6:C" & .Cells(.Rows.Count, 1).End(xlUp).Row)
End With

For Each rng In rngFind
 Set rngF = objSh2.Range("A:C").Find(What:=rng, LookAt:=xlWhole)
 If rngF Is Nothing Then
   If rngDel Is Nothing Then
     Set rngDel = rng.EntireRow
   Else
     Set rngDel = Union(rngDel, rng.EntireRow)
   End If
 End If
Next

If Not rngDel Is Nothing Then rngDel.EntireRow.Hidden = True

Set objSh1 = Nothing
Set objSh2 = Nothing
Set rngFind = Nothing
Set rngF = Nothing
Set rngDel = Nothing

End Sub

Ich möchte eigentlich den Zellbereich ab A6 bis C vergleichen.
[code][/  Set rngFind = .Range("A6:C" & .Cells(.Rows.Count, 1).End(xlUp).Row)
code]
Hier setzte ich aber nur auf Spalte 1 also A.

Geht das überhaupt? Kann mir jemand sagen, was ich wie anpassen müsste?
Vielen Dank für Eure Unterstützung.

Gruß
Wolf
Hallo,

anstelle deines Quelltextes, der nach deiner Aussage ohnehin nicht das macht, was er soll, wäre ein Blick auf deine Listen, gerne mit Wunschergebnis, besser gewesen.
Hallöchen,

Zitat:Set rngFind = .Range("A6:C" & .Cells(.Rows.Count, 1).End(xlUp).Row)
Hier setzte ich aber nur auf Spalte 1 also A.

Stimmt nicht. Du hast schon A bis C, schaust aber nur in Spalte A, wo die letzte belegte Zeile ist.

Falls Du jedoch in den 3 Spalten nach der letzen schauen willst, könntest Du es z.B. so tun:

… WorkSheetFunction.Max(.Cells(.Rows.Count, 1).End(xlUp).Row, .Cells(.Rows.Count, 2).End(xlUp).Row, .Cells(.Rows.Count, 3).End(xlUp).Row)
(25.01.2019, 12:30)Klaus-Dieter schrieb: [ -> ]Hallo,

anstelle deines Quelltextes, der nach deiner Aussage ohnehin nicht das macht, was er soll, wäre ein Blick auf deine Listen, gerne mit Wunschergebnis, besser gewesen.

Total guter Lösungsvorschlag... Läd man eine Datei hoch, kommen Antworten wie "Denk doch mal nach vorher, wo ist denn dein Quelltext", zeigt man seinen Code auch wieder nicht richtig...

(25.01.2019, 21:56)schauan schrieb: [ -> ]Stimmt nicht. Du hast schon A bis C, schaust aber nur in Spalte A, wo die letzte belegte Zeile ist.
genau das meinte ich, die ",1" legt ja die Spalte auf A fest, hab mich etwas unglücklich ausgedrückt :)
Dein Code funktioniert einwandfrei, vielen Dank dafür.