caffebone11
Goto Top

Löschen der Zeile, wenn Zelle einen bestimmten Wert beinhaltet

Löschen der Zeile, wenn Zelle einen bestimmten Wert beinhaltet

Hallo,

ich habe eine Software-Liste als eine Excel-Datei:
(A-Softwarebezeichnung, B-Hersteller, C-Kommentar usw.)
...
eDrawings 2008 SolidWorks
GNU Ghostscript 7.05
...
Hotfix für Windows XP (KB979306) Microsoft Corporation
Hotfix für Windows XP (KB981793) Microsoft Corporation
...
Sicherheitsupdate für Windows Internet Explorer 7 (KB972260)
Sicherheitsupdate für Windows Internet Explorer 7 (KB972295)
...
Update für Windows XP (KB2467659)
Update für Windows XP (KB2469664)
..
Nun möchte ich die komplette Zeilen, die in A mit "Hotfix" und "Sicherheitsupdate" sowie "Update" beginnen, löschen, also von "Müll-Einträgen" bereinigen.

Es Beispiel habe ich:
Alle leeren Zellen löschen:
Sub DeleteEmptys() 
   Dim rng As Range   
   Application.ScreenUpdating = False 
   For Each rng In ActiveSheet.UsedRange    
      If IsEmpty(rng) Then rng.Delete xlShiftUp  
   Next rng 
   Application.ScreenUpdating = True 
End Sub 
bzw.Löschen aller Zellen in Spalte A mit "hallo" im Text:
Sub DeleteQueryCells() 
   Dim var As Variant   
   Do While Not IsError(var)     
      var = Application.Match("hallo", Columns(1), 0)  
      If Not IsError(var) Then Cells(var, 1).Delete xlShiftUp     
   Loop 
End Sub  
 


Das ist aber nicht das ich brauche.
Für Hilfe Danke!!

Content-Key: 177646

Url: https://administrator.de/contentid/177646

Printed on: April 25, 2024 at 02:04 o'clock

Member: cse
cse Dec 13, 2011 at 16:08:07 (UTC)
Goto Top
So schwer isses gar nicht face-smile:


Sub DeleteQueryCells()
Dim var As Variant
Do While Not IsError(var)
var = Application.Match("*hallo*", Columns(1), 0)
If Not IsError(var) Then Cells(var, 1).Delete xlShiftUp
Loop
End Sub

vielleicht findest du es ja :D
Member: bastla
bastla Dec 13, 2011 at 16:10:11 (UTC)
Goto Top
Hallo caffeebone11 und willkommen im Forum!

Für ein Suchwort zB so:
Sub DeleteQueryCells()
   Do While Not IsError(var)
      var = Application.Match("Sicherheitsupdate*", Columns(1), 0)  
      If Not IsError(var) Then Rows(var).Delete
   Loop
End Sub
Um alle Begriffe durchzugehen, könntest Du das Sub mit Übergabe des Suchwortes als Parameter aufrufen ...

Grüße
bastla
Member: caffebone11
caffebone11 Dec 13, 2011 at 16:29:28 (UTC)
Goto Top
Das ging aber schnell. Vielen Dank!!!

Ich habe eigentlich so um 10 Begriffen, die ich gerne löschen möchte.
Mehrere var-Variablen helfen an der Stelle nicht oder?
...
Do While Not IsError(var)
      var = Application.Match("Sicherheitsupdate*", Columns(1), 0)   
      var1 = Application.Match("Hotfix*", Columns(1), 0)   
      If Not IsError(var) Then Rows(var).Delete
      If Not IsError(var1) Then Rows(var1).Delete
Loop
...

Grüße
caffeebone11
Member: bastla
bastla Dec 13, 2011 at 16:36:41 (UTC)
Goto Top
Hallo caffebone11!
Mehrere var-Variablen helfen an der Stelle nicht oder?
Genau deswegen gibt es Schleifen ...

... etwa (ungetestet):
Sub WegDamit()
Begriffe = Array("Sicherheitsupdate*", "Hotfix*", "Update*")  

For Each Begriff In Begriffe
   Do While Not IsError(var)
      var = Application.Match(Begriff, Columns(1), 0)
      If Not IsError(var) Then Rows(var).Delete
   Loop
Next
End Sub
Den "*" müsstest Du nicht unbedingt für jeden Suchbegriff mit eingeben, wenn in allen Fällen das gesuchte Wort am Anfang der Zelle steht - dann könntest Du die Zeile 6 auch so schreiben:
var = Application.Match(Begriff & "*", Columns(1), 0)
Grüße
bastla
Member: caffebone11
caffebone11 Dec 14, 2011 at 12:52:34 (UTC)
Goto Top
Hallo Bastla,

erst mal vielen Dank!
Mit der Schleife funktioniert es noch nicht ganz. Gelöscht wird nur der erste Begriff....
Hättest Du eine Idee?

Grüße
caffebone11
Mitglied: 76109
76109 Dec 14, 2011 at 19:46:56 (UTC)
Goto Top
Member: bastla
bastla Dec 14, 2011 at 20:51:51 (UTC)
Goto Top
Hallo caffeebone11!

Füge vor Zeile 5 noch ein:
var = 0
damit "var" einen "Nicht-Fehler-Wert" enthält und die "While"-Schleife (neuerlich) durchlaufen werden kann ...

Grüße
bastla
Member: caffebone11
caffebone11 Dec 15, 2011 at 07:01:06 (UTC)
Goto Top
Hallo Bastla,

jetzt läuft das Script bestens! Vielen Dank!!!!!!


Viele Grüße
cafeebone11