AW: Ähnliche Einträge suchen und Löschen
22.09.2021 07:27:40
Vba-Tüftler
Guten morgen Gerd,
hast wohl recht ich habe versucht es möglichst treffend darzustellen. Im Endeffekt hat dein Code doch funktioniert, ich hatte nur irgendwo einen Fehler eingebaut. In dem Excel Sheet, was ich mit hochlade, wären dann die 200000 FERT und 200000_WKZ schon entfernt. Nun wollte ich noch andere Posten die in dem Sheet sind, hier als Bahn usw. gelistet, löschen. Meine Idee war auch wieder über InStr, aber das haut nicht so hin.
Zuletzt bin ich auch noch nicht komplett dahinter gestiegen, wie ich die FERT und WKZ Artikel ohne gemeinsamen S-Artikel mit einander verrechne. Heißt WKZ konsolidiert mit FERT oder umgekehrt, schenkt sich nichts und dann soll quasi für diesen konsolidierten Wert eine S-Spalte angelegt werden und die anderen beiden gelöscht werden. Dies ginge ja wieder mit deinem vorigen Code. Problem hier ist die WZK und FERT stehen nicht unbedingt nebeneinander, so wie in meinem Beispiel. Wirklich vielen Dank, dass dir die Zeit nimmst.
Sub Neue_GuV_implementieren()
Dim blatt1 As Worksheet
Dim blatt2 As Worksheet
Dim r As Range
Dim i As Long
Set blatt1 = Worksheets("Tabelle1")
Set blatt2 = Worksheets("Tabelle2")
For Each r In blatt2.Range(blatt2.Cells(1, 1), _
blatt2.Cells(1, Columns.Count).End(xlToLeft))
If r Like "######S*" Then
i = i + 1
End If
Next
For i = blatt2.Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
If InStr(blatt2.Cells(1, i), "WKZ") > 0 Or InStr(blatt2.Cells(1, i), " FERT") > 0 Then
If WorksheetFunction.CountIf(blatt2.Rows(1), Left(blatt2.Cells(1, i + 1), 6) & "S*") > 0 Then
blatt2.Columns(i).Delete
End If
End If
Next
'For i = blatt2.Cells(1, Columns.Count).End(xlToLeft).Column To 2 Step -1
'If InStr(blatt2.Cells(1, i), "*WKZ*") > 0 Or _
InStr(blatt2.Cells(1, i), "*FERT*") > 0 Or _
InStr(blatt2.Cells(1, i), "######S*") > 0 Then
'Else
'blatt2.Columns(i).Delete
'End If
'Next
Set blatt1 = Nothing
Set blatt2 = Nothing
End If
End Sub
Tabelle: https://www.herber.de/bbs/user/148198.xlsx