ich habe eine große Anzahl an Bezeichnungen in der ersten Zeil in Sheet 1 und eine kleinere Anzahl an Bezeichnungen in Sheet 2.
Ich möchte nun die Bezeichnungen in Sheet 1 mit Sheet 2 vergleichen und die Spalten in Sheet 1 löschen, welche in Sheet 2 nicht vorhanden sind.
Ich habe es mit folgendem Code probiert, aber er löscht Spalten bzw. lässt welche stehen, die ich nicht nachvollziehen kann.
Sub bereinigen()
Dim i As Long
Dim j As Long
Dim Spalte_L As Long
Dim Spalte_M As Long
Dim wksDiagramm As Worksheet
Dim wksDaten As Worksheet
Set wksDiagramm = Worksheets("Diagramm")
Set wksDaten = Worksheets("Daten")
Spalte_L = wksDiagramm.Cells(1, Columns.Count).End(xlToLeft).Column
Spalte_M = wksDaten.Cells(1, Columns.Count).End(xlToLeft).Column
For i = Spalte_L To 1 Step -1
For j = Spalte_M To 1 Step -1
If wksDiagramm.Cells(1, j) = wksDaten.Cells(1, i) Then
i = i - 1
GoTo weiter
End If
Next
wksDiagramm.Columns(i).Delete
weiter:
Next
MsgBox Spalte_L & " & " & Spalte_M
End Sub
Zudem möchte ich die Zeilen löschen, welche nach dem löschen der Spalten keine Werte mehr enthalten. Datum, Zeit und Dauer sind dabei weiterhin vorhanden, also die Zellen würden erst ab Spalte D leer sein. Grundgerüst war hier erstmal folgendes, weiß aber nicht, wie ich es anpassen müsste.Sub LeereZeilenEntfernen()
Dim Zeile As Long
Dim ZeileMax As Long
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
For Zeile = ZeileMax To 1 Step -1
If .Cells(Zeile, 1).Value = "" Then
.Rows(Zeile).Delete
End If
Next Zeile
End With
End Sub
Habt ihr Ideen, was an den Codes geändert werden müsste oder gibt es noch effizientere Lösungen?Viele Grüße
Torsten
https://www.herber.de/bbs/user/141132.xlsm