Microsoft Excel

Herbers Excel/VBA-Archiv

Zeilen löschen wenn... | Herbers Excel-Forum


Betrifft: Zeilen löschen wenn... von: Lasse
Geschrieben am: 12.11.2009 10:45:05

Hallo,

ich habe eine Tabelle in der eine Spalte "Name" enthalten ist.
In dieser Tabelle möchte ich alle Zeilen löschen, in denen bei "Name" nicht ein Name von einer Liste mit 25 Personen steht.

Vielen Dank im Voraus,
Lasse

  

Betrifft: AW: Zeilen löschen wenn... von: Oberschlumpf
Geschrieben am: 12.11.2009 11:11:17

Hi Lasse

Bitte Bsp-Datei

Ciao
Thorsten


  

Betrifft: AW: Zeilen löschen wenn... von: Lasse
Geschrieben am: 12.11.2009 11:51:23

https://www.herber.de/bbs/user/65809.xls
Aus dieser Beispieldatei sollen alle Zeilen mit Bearbeitern außer Peter Müller und Rene Krämer gelöscht werden.


  

Betrifft: AW: Zeilen löschen wenn... von: Oberschlumpf
Geschrieben am: 12.11.2009 12:12:50

Hi Lasse

auch du solltest in jedem Beitrag Zeit für ein "Hallo" haben - es ist und bleibt freundlicher!

Ciao
Thorsten


  

Betrifft: AW: Zeilen löschen wenn... von: Oberschlumpf
Geschrieben am: 12.11.2009 12:23:06

Hi Lasse

Trag diesen Code in ein allgemeines Modul ein:

Sub sbDelete()

    Dim lloZeile As Long
    
        For lloZeile = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
            If Range("A" & lloZeile).Value = "Peter Müller" Or _
               Range("A" & lloZeile).Value = "Rene Krämer" Then
                    Rows(lloZeile & ":" & lloZeile).Delete Shift:=xlUp
            End If
        Next

End Sub
Hilfts?

Ciao
Thorsten


  

Betrifft: AW: Zeilen löschen wenn... von: Lasse
Geschrieben am: 12.11.2009 12:45:42

Hi Thorsten.

Entschuldigung das ich eben kein "Hallo" geschrieben hab. Nachdem ich die Beispieldatei erstellt hatte hab ich es einfach vergessen.

Das ist schonmal ein Anfang, aber ich brauche es genau anders herum.
In der If Bedingung wo Peter Müller und Rene Krämer stehen sollen die Zeilen nicht gelöscht werden und bei Else (also allen anderen Namen) sollen die Zeilen gelöscht werden.

Gruß,
Lasse


  

Betrifft: AW: Zeilen löschen wenn... von: Oberschlumpf
Geschrieben am: 12.11.2009 12:54:51

Hi Lasse

lach...ja...du hast Recht...genau so steht es auch in deinen Fragen...tschulligung...mein Fehler!

Versuch es mal so:

Sub sbDelete()

    Dim lloZeile As Long
    
        For lloZeile = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
            If Range("A" & lloZeile).Value <> "Peter Müller" And _
               Range("A" & lloZeile).Value <> "Rene Krämer" Then
                    Rows(lloZeile & ":" & lloZeile).Delete Shift:=xlUp
            End If
        Next

End Sub

So sollte es dein Ziel erreichen, oder?

Ciao
Thorsten


  

Betrifft: AW: Zeilen löschen wenn... von: Lasse
Geschrieben am: 12.11.2009 14:31:50

Hi Thorsten

super so funktioniert es. Es dauert zwar ein wenig bis mein Rechner das verarbeitet hat weil meine Tabelle größer ist und ich 26 Namen habe, aber es läuft! Danke!

Kann ich in das gleiche Makro jetzt noch einbauen das alle Zeilen wo "0" bei Fakturierbare Stunden steht ebenfalls gelöscht werden?

Gruß,
Lasse


  

Betrifft: AW: Zeilen löschen wenn... von: Oberschlumpf
Geschrieben am: 12.11.2009 15:02:36

Hi Lasse

Vielleicht so

Sub sbDelete()

    Dim lloZeile As Long
    
        For lloZeile = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
            If Range("A" & lloZeile).Value <> "Peter Müller" And _
               Range("A" & lloZeile).Value <> "Rene Krämer" Then
                    Rows(lloZeile & ":" & lloZeile).Delete Shift:=xlUp
            End If
            If Range("G" & lloZeile).Value = 0 Then 
                    Rows(lloZeile & ":" & lloZeile).Delete Shift:=xlUp
            End If
        Next

End Sub

Ich finde in deiner Bsp-Datei keine Spalte, die "Fakturierbare Stunden" heißt, vermute aber, es handelt sich um Spalte G, weil die "Fakturierbar" heißt.
Wenn nicht, dann musst du den Code anpassen.

Hilfts?

Ciao
Thorsten


  

Betrifft: AW: Zeilen löschen wenn... von: Lasse
Geschrieben am: 12.11.2009 15:26:57

Hi Thomas

Vielen Dank jetzt klappt alles!

Gruß,
Lasse


  

Betrifft: erst Korrektur lesen, dann abschicken von: Oberschlumpf
Geschrieben am: 12.11.2009 16:09:18

Hi

Wer is'n Thomas????????

ciao


  

Betrifft: AW: erst Korrektur lesen, dann abschicken von: Lasse
Geschrieben am: 12.11.2009 16:23:05

Hi Thorsten

Das ist ein Kollege dem ich grad ne Mail geschrieben hatte. Sorry.

Gruß,
Lasse


  

Betrifft: AW: Zeilen löschen wenn... von: Daniel
Geschrieben am: 13.11.2009 00:32:11

Hi

schreibe die Tabelle mit den 25 Namen in eine eigene Tabelle.
füge in deiner Liste eine Hilfsspalte ein, die mit der ZählenWenn-Formel prüft, ob der Wert aus der Stpalte NAME in der Liste mti den 25 Namen vorhanden ist (das Ergebnis der Zählenwenn-Funtkion sollte 0 oder 1 sein)
dann wendest du den autofilter auf die Hilfsspalte an, so daß die zu löschenden Zeilen sichtbar sind und löschst diese.

Gruß, Daniel


  

Betrifft: kannst ja mal diesen Code testen,... von: Tino
Geschrieben am: 12.11.2009 11:25:45

Hallo,
ich bin davon ausgegangen das die Überschrift 'Name' irgendwo in Zeile 1 steht.

Option Explicit

Sub Test()
Dim MeAR(), varCol, varAnzahl
Dim A As Long, booGefunden As Boolean
Dim oSHTabelle As Worksheet
Application.ScreenUpdating = False
    
    Set oSHTabelle = Sheets("Tabelle1") 'Tabellenname anpassen 
    With oSHTabelle.UsedRange
        
        varCol = Application.Match("Name", .Rows(1), 0)
        MeAR = .Columns(varCol).Value2
        
        For A = 1 To Ubound(MeAR)
           varAnzahl = Split(MeAR(A, 1), " ")
           If Ubound(varAnzahl) = 24 Then
            MeAR(A, 1) = "=TRUE"
            booGefunden = True
           Else
            MeAR(A, 1) = "=ROW()"
           End If
        Next A
        
        If A > 1 And booGefunden Then
           With .Columns(.Columns.Count).Offset(0, 1)
                .FormulaR1C1 = MeAR
                oSHTabelle.UsedRange.Sort Key1:=.Cells(1, 1), Order1:=xlAscending, Header:=xlYes
                
                On Error Resume Next
                .SpecialCells(xlCellTypeFormulas, 4).EntireRow.Delete
                .EntireColumn.Delete
                On Error GoTo 0
           End With
        End If
    
    End With
Application.ScreenUpdating = True

End Sub
Gruß Tino


  

Betrifft: Vergiss es... von: Tino
Geschrieben am: 12.11.2009 11:56:48

Dein Beispiel ist anders wie ich verstanden habe.

Gruß Tino


  

Betrifft: AW: Vergiss es... von: Lasse
Geschrieben am: 12.11.2009 12:00:04

Trotzdem Danke!
Gruß,
Lasse


Beiträge aus den Excel-Beispielen zum Thema "Zeilen löschen wenn..."