Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Löschen von Zeilen mit bestimmen Wortsequenzen in Excel Macro
#1
Ich habe noch keine großen Erfahrungen mit der Programmierung von Macros und habe folgendes Problem: In einer Matrix von A1 bis X500 taucht an verschiedenen Stellen das Wort "Summe" in unterschiedlichen Textfolgen auf. Ich möchte alle Zeilen Löschen, in dem das Wort Teilwort "SUMM" vorkommt, egal in welcher Spalte. Kann mir hier jemand weiterhelfen. Undecided
Antworten Top
#2
Hey,

versuche es mal damit:

Code:
Sub DeleteRowsByTextInRange()
    Dim rng As Range
   
    For Each rng In ActiveSheet.Range("A1:X500")
        If LCase(rng.Value) Like "*summ*" Then
            Rows(rng.Row).Delete
        End If
    Next
End Sub


Es geht vermutlich auch einfacher mit der FIND Funktion, aber der Code tut es auch.
_________________
Gruss
Nitro

-=Schon die Piste, geh FREERIDEN=-
[-] Folgende(r) 1 Nutzer sagt Danke an nitrosworld für diesen Beitrag:
  • rums
Antworten Top
#3
Hallo,

ich würde es so lösen:


Code:
Sub DeleteRowsByTextInRange()
 Dim i As Long, j As Long
 Dim rngR As Range
 
 With Sheets("Tabelle3")
   For i = 1 To 500
     For j = 1 To 24
       If LCase(Cells(i, j).Value) Like "*summ*" Then
         If rngR Is Nothing Then
           Set rngR = Rows(i)
         Else
           Set rngR = Union(rngR, Rows(i))
         End If
       End If
     Next j
   Next i
 End With
 
 If Not rngR Is Nothing Then
   rngR.Delete
   Set rngR = Nothing
 End If
 
End Sub
@Nitro
Dein Code muss nicht alles erfassen.
Test mal in dem Du drei Zeilen hintereinander Summe1 bis Summe3 schreibst.
Gruß Atilla
Antworten Top
#4
@atilla Danke.

Dann aber lieber so:
Code:
Sub DeleteRowsByTextInRange()
   Dim rng As Range
   Dim i As Long

   On Error Resume Next

   Set rng = ActiveSheet.Range("A1:X500")
   
   For i = rng.Count To 1 Step -1
       If LCase(rng(i).Value) Like "*summ*" Then
           Rows(rng(i).Row).Delete
       End If
   Next
End Sub
_________________
Gruss
Nitro

-=Schon die Piste, geh FREERIDEN=-
Antworten Top
#5
Hallo Nitro,

warum denn, "dann aber lieber so"?

Deine Variante löscht jede Fundzeile nach einander beginnend von der letzten Zeile.

Meine sammelt erst alle Fundzeilen und löscht sie in einem Rutsch.
Deswegen ist es bei mir auch egal, ob ich mit der ersten oder letzten Zeile anfange.
Gruß Atilla
Antworten Top
#6
Hallo,

hier noch eine erweiterte Version, da es Blödsinn ist, noch weitere Zellen innerhalb einer Zeile abkzulappern, wenn sie bei einem Fund sowieso gelöscht wird.
Insofern ist der Einwand von Nitro berechtigt.


Code:
Sub DeleteRowsByTextInRange()
Dim i As Long, j As Long
Dim rngR As Range

With Sheets("Tabelle3")
  For i = 1 To 500
    For j = 1 To 24
      If LCase(Cells(i, j).Value) Like "*summ*" Then
        If rngR Is Nothing Then
          Set rngR = Rows(i)
        Else
          Set rngR = Union(rngR, Rows(i))
        End If
        i = i + 1
      End If
    Next j
  Next i
End With

If Not rngR Is Nothing Then
  rngR.Delete
  Set rngR = Nothing
End If

End Sub


Nur diese Zeile:
i= i +1
hinzugekommen
Gruß Atilla
Antworten Top
#7
Weil meine kürzer und schneller ist. Exclamation
_________________
Gruss
Nitro

-=Schon die Piste, geh FREERIDEN=-
Antworten Top
#8
(06.02.2017, 12:18)nitrosworld schrieb: Weil meine kürzer und schneller ist. Exclamation

kürzer ja :19: , aber schneller mit der zuletzt geposteten Ergänzung sicher nicht.
(Man, man, man, Excel wird immer vers.....)
Gruß Atilla
Antworten Top
#9
Code:
cells.replace "*SUMM*",""
Antworten Top
#10
Hallo snb

(06.02.2017, 02:06)rums schrieb: Ich möchte alle Zeilen Löschen, in dem das Wort Teilwort "SUMM" vorkommt..
Gruß Atilla
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste