Excel: unliebsame Zeilen rausschmeißen.

  • #1
K

klexy

Bekanntes Mitglied
Themenersteller
Dabei seit
04.05.2002
Beiträge
802
Reaktionspunkte
0
Ort
Bayern
Ich steh voll am Bahnhof und der Zug ist ziemlich abgefahren.
So sieht es aus:

hfswrczak
hfswrczak
hfswrczak
hfswrczak
hfswrczak
1
2
3
7
9
hfswrczak
1
2
5
6
hfswrczak
7
8
9
hfswrczak
4
5
6

Durch den bisherigen Verlauf des Makros habe ich alle unliebsamen Zeilen der Tabelle mit hfswrczak in der Spalte A gekennzeichnet. Jetzt soll das Makro im weiteren Verlauf der Handlung alle Zeilen, die hfswrczak in Spalte A haben, löschen. Das sieht dann so aus:
Code:
  For Each zelle In Range(A1:A10000)
    If zelle.Value = hfswrczak Then
    zelle.EntireRow.Select
    Selection.Delete Shift:=xlUp
    End If
  Next

Diesen Code-Schnipsel habe ich von Matjes geklaut ;D, also muß er auch funktionieren.
Aber: im oberen Bereich, wo die unliebsamen Zeilen unmittelbar aufeinander folgen, löscht er nur jede 2. Zeile. Ich könnte dieses Modul jetzt 20x hintereinander in mein Makro reinkopieren, aber das ist selbst mir zu unelegant.

[o.T.] Hfswrczak ist übrigens der kaputteste Bandname, den ich je gehört habe. Wahrscheinlich gibt es sie schon lange nicht mehr. Deshalb setze ich den Jungs hier ein Denkmal.
 
  • #2
Hi klexy,

in welchem Zusammenhang hab ich so gelöscht :mad:
( :eek: Alzheimer )

Viel größere Schwierigkeit hab ich mit dem Bandnamen Hfswrczak. Wie spricht man das aus ? (Bitte in Lautschrift)

Damit diese unaussprechliche Band nicht in 20 Anlaufen verschwindet, hier 2 Lösungsmöglichkeiten, bei denen ich kein Alzheimer bekommen werde. ;D

Gruß Matjes ;)

@klexy: auch mit Dim ;D

Code:
 Option Explicit
Sub KlexysMusikLoeschen1()
  Dim x As Long, l_Anz_row As Long
  Dim ws As Worksheet
  
  Set ws = ActiveSheet
    l_Anz_row = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    For x = l_Anz_row To 1 Step -1
      If ws.Cells(x, 1).Value = hfswrczak Then
        ws.Rows(x).Delete
      End If
    Next
  Set ws = Nothing
End Sub

Sub KlexysMusikLoeschen2()
  Dim Zelle As Range, r As Range

  Set r = ActiveSheet.Range(A1:A10000)
  Set Zelle = r.Find(hfswrczak, _
                 LookIn:=xlValues, _
                 LookAt:=xlWhole)
  Do While Not Zelle Is Nothing
    Zelle.EntireRow.Delete
    Set Zelle = r.FindNext
  Loop
  Set r = Nothing
End Sub
 
  • #3
Du hast nie etwas in dieser Weise gelöscht. Es ist eine Abwandlung deiner ersten Antwort hier:
(Ohne Dim :D und anscheinend ohne vollen Durchblick). Wenn man mit diesem Code in jede Zelle neben hfswrczak was reinschreiben will, funktioniert es. Nur beim Löschen kommt er durcheinander. Wahrscheinlich weil er sich die Zeilennummer merkt und nach dem Löschen der aktuellen Zeile erst die übernächste für die nächste hält (weil die Zeilen nach dem Löschen neu nummeriert sind). Oder so :-\.

Die Band spricht man: [hfswrtschak]

Bei deiner Lösung 2 verträgt sich das Dim nicht mit dem Rest des Makros (Mehrfachdeklaration im aktuellen Gültigkeitsbereich) obwohl ich in dem Makro keinen weiteren Dim habe

Ich habe jetzt eine Variante der Lösung 1 genommen (ohne Dim):
Code:
For x = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row To 1 Step -1
      If ActiveSheet.Cells(x, 1).Value = hfswrczak Then
        ActiveSheet.Rows(x).Delete
      End If
    Next

Und es klappt vorherragend! ;D ;D ;D
 
  • #4
Hi Klexy,

den Namen der Band auszusprechen werde ich in der kommenden Woche Urlaub :D bei mehreren Bieren üben - vielleicht geht's dann ;D

Bei dem zweiten Beispiel verwendest Du wahrscheinlich schon eine Variable gleichen Namens. Wenn dann die Dim-Anweisung folgt ist diese Variable schon als Variant deklariert (automatisch) und der Kompiler sieht dann die Dim-Anweisung und will der Variablen einen anderen Typ zuweisen - kann er aber nicht -> deshalb das Meckern.

So nun erstmal eine Woche Urlaub :D

Gruß Matjes :)
 
  • #5
Oje, das heißt, eine Woche ohne vernünftige Makro-Unterstützung :(.

Hoffentlich langt das Bier für die linguistischen Experimente ;D.
 
Thema:

Excel: unliebsame Zeilen rausschmeißen.

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben