02.09.2020, 12:23
(Dieser Beitrag wurde zuletzt bearbeitet: 02.09.2020, 12:25 von MichaLauterbach.)
Hallo,
ich habe google schon hart gefordert, bin aber nicht ganz fündig geworden. Vielleicht benutze ich auch die falschen keywords..
Ich betreue in einem Verein eine Exceltabelle mit ca 800 Zeilen und 9 Spalten.
Davon möchte ich per Macro eine Zeile automatisch löschen wenn in spalte 1 ein bestimmter Nachname steht (bis zu 30 verschiedene) Oder in spalte 3 eine bestimmte Stadt (auch locker 20 oder mehr die gelöscht werden müssen)
Mein alter Weg war schlecht
Inzwischen bin ich am Limit der "Or" angekommen, brauche aber noch mehr..
Ihr könnt euch vorstellen wie lang das Macro dauert....
In einem Englischen Forum habe ich folgendes gefunden
Hier habe ich das Problem das nur Spalte 1 durchsucht wird und nur die erste Zeile die gefunden wird gelöscht wird. (Auch sonst hab ich keine Ahnung was hier passiert, das ist über meinem einfachen "If Then Else" Wissen..)
Hat jemand Tipps wie ich das umsetzten kann?
Zusammenfassung:
Ich möchte die ganze Zeile löschen wenn jemand A oder D oder M oder P oder Y heißt oder wenn er aus A oder B oder N oder U oder Z kommt ohne mich in unendlichen if schleifen aufzuhängen.
Vielen Dank für die Hilfe.
ich habe google schon hart gefordert, bin aber nicht ganz fündig geworden. Vielleicht benutze ich auch die falschen keywords..
Ich betreue in einem Verein eine Exceltabelle mit ca 800 Zeilen und 9 Spalten.
Davon möchte ich per Macro eine Zeile automatisch löschen wenn in spalte 1 ein bestimmter Nachname steht (bis zu 30 verschiedene) Oder in spalte 3 eine bestimmte Stadt (auch locker 20 oder mehr die gelöscht werden müssen)
Mein alter Weg war schlecht
Code:
last = Cells(Rows.Count, 1).End(xlUp).Row
i = 2
While i <= last
If Cells(i, 3).Value = "Leipzig" Or Cells(i, 3).Value = "Halle" Or ... Or...Or...Or...Or...Or.... Then
Rows(i).Delete
Else
i = i + 1
End If
Wend
i = 2
While i <= last
If Cells(i, 1).Value = "Jahn" Or Cells(i, 1).Value = "Müller" Or Cells(i, 1).Value = "Vater" Or ... Or ... Or...Or...Or...Then
Rows(i).Delete
Else
i = i + 1
End If
Wend
Inzwischen bin ich am Limit der "Or" angekommen, brauche aber noch mehr..
Ihr könnt euch vorstellen wie lang das Macro dauert....
In einem Englischen Forum habe ich folgendes gefunden
Code:
Sub Sample()
Dim sString As String
Dim MyAr
Dim i As Long
Dim delRange As Range, aCell As Range
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
'~~> Add more to the list here separated by "/"
sString = "Vater/Jahn/Müller"
MyAr = Split(sString, "/")
With ws
For i = LBound(MyAr) To UBound(MyAr)
Set aCell = .Columns(1).Find(What:=MyAr(i), LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not aCell Is Nothing Then
If delRange Is Nothing Then
Set delRange = .Rows(aCell.Row)
Else
Set delRange = Union(delRange, .Rows(aCell.Row))
End If
End If
Next i
End With
If Not delange Is Nothing Then delRange.Delete
End Sub
Hier habe ich das Problem das nur Spalte 1 durchsucht wird und nur die erste Zeile die gefunden wird gelöscht wird. (Auch sonst hab ich keine Ahnung was hier passiert, das ist über meinem einfachen "If Then Else" Wissen..)
Hat jemand Tipps wie ich das umsetzten kann?
Zusammenfassung:
Ich möchte die ganze Zeile löschen wenn jemand A oder D oder M oder P oder Y heißt oder wenn er aus A oder B oder N oder U oder Z kommt ohne mich in unendlichen if schleifen aufzuhängen.
Vielen Dank für die Hilfe.