Excel - Makro, löschen von nicht benötigten Zeilen

  • #1
B

brandnewman

Guest
Hallo Excel-Freaks,

ich habe folgendes Problem. Eine Excel-Rechnungstabelle, die verschiedene Rechnungspositionen beinhaltet. Nun möchte ich aber, dass nur die Positionen auf dem Ausdruck erscheinen, die auch tatsächlich gebraucht wurden. Sprich alles das was nicht gebraucht wurde soll rausgeschmissen werden. Bisher habe ich nur Makros gesehen, mit denen man komplette Zeilen oder Spalten löschen kann. Ich möchte aber - wie bereits beschrieben - nur einen bestimmten Zellbereich, der quasi keine Stückzahl enthält löschen. Wie geht so was?
 
  • #2
Hallo brandnewman,

beschreib mal deine Tabelle etwas näher.

In welchem Bereich stehen deine Stückzahlen ? Ist der bereich nach unten flexibel?

Wenn der Makro z.B. von einer bestimmten Zeile an in einer Spalte (hier z.B. Stückzahl) suchen soll, welches Kriterium sagt im, daß die Suche zu Ende ist?

Gruß Matjes :)
 
  • #3
Hallo Matjes,

konkret geht es um folgendes:
in den Zeilen 24 - 38 stehen einzelne Positionen.
Wenn nun bei einer Position keine Stückzahl (die Stückzahl steht in der Spalte C) eingetragen wird, dann soll das Makro diese Zeile(n) löschen.

Nach unten ist der Bereich nicht wirklich flexibel, da ja dann noch Daten wie Gesamtsumme, Zahlungsziel etc. folgen müssen. Das Kriterium, dass die Suche zu Ende ist soll quasi die Zeilennummer (38) sein. Geht so etwas?
 
  • #4
Hallo brandnewman,

die Lösung könnte wie folgt aussehen.

Gruß Matjes :)
Code:
Sub ZeilenMitLeererStueckzahlLoeschen()

 ->Bereich der untersucht wird
  Const c_SP = 3->entspricht C
  Const c_Zeile_Anfang = 24
  Const c_Zeile_Ende = 38

  Dim ws As Worksheet, z As Long

  Set ws = ActiveSheet
  
 ->für alle Zeile des Überwachungsbereiches
 ->vom Ende zum Anfang
  For z = c_Zeile_Ende To c_Zeile_Anfang Step -1
   ->Zelle Stückzahl leer ?
    If ws.Cells(z, c_SP).Value =  Then
     ->Zeile Löschen
      ws.Rows(z).Delete
    End If
  Next
  
  Set ws = Nothing
End Sub
 
  • #5
Hallo Matjes,

wow - super - funktioniert auf Anhieb - da sag ich nur chapeau!

Aber da werd ich doch auch gleich übermütig - gibt es auch eine Möglichkeit für ein Makro um den letzten Filter
-ZeilenMitLeererStueckzahlLoeschen()- wieder aufzuheben, sprich quasi das Ausgangssheet (Rücksprung) wieder herzustellen? Könnte ja sein, dass man sich mal vertippt hat.
 
  • #6
Hallo brandnewman,

man könnte das noch dreiteilen:

a) einen Makro zum Ausblenden der Zeilen ohne Stückzahl
b) einen Makro zum Einblenden aller Zeilen
c) einen Makro zum Löschen der Zeilen ohne Stückzahl

Das sähe dann so aus:

Gruß matjes :)
Code:
Option Explicit
  
 ->Bereich der untersucht wird
  Const c_SP_Stueckzahl = 3->entspricht C
  Const c_Zeile_Anfang = 24
  Const c_Zeile_Ende = 38
'****************************************************************
Sub ZeilenMitLeererStueckzahl_Ausblenden()

  Dim z As Long
 ->für alle Zeile des Überwachungsbereiches vom Ende zum Anfang
  For z = c_Zeile_Ende To c_Zeile_Anfang Step -1
   ->Zelle Stückzahl leer ? -> Zeile ausblenden
    If ActiveSheet.Cells(z, c_SP_Stueckzahl).Value =  Then
      ActiveSheet.Rows(z).Hidden = True
    End If
  Next
End Sub
'****************************************************************
Sub ZeilenMitLeererStueckzahl_Einblenden()

 ->alle Zeile des Überwachungsbereiches einblenden
  ActiveSheet.Rows(c_Zeile_Anfang & : & c_Zeile_Ende).Hidden = False
End Sub
'****************************************************************
Sub ZeilenMitLeererStueckzahl_Loeschen()

  Dim z As Long
 ->für alle Zeile des Überwachungsbereiches vom Ende zum Anfang
  For z = c_Zeile_Ende To c_Zeile_Anfang Step -1
   ->Zelle Stückzahl leer ? -> Zeile löschen
    If ActiveSheet.Cells(z, c_SP_Stueckzahl).Value =  Then
      ActiveSheet.Rows(z).Delete
    End If
  Next
End Sub
 
Thema:

Excel - Makro, löschen von nicht benötigten Zeilen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.836
Beiträge
707.957
Mitglieder
51.488
Neuestes Mitglied
elkhse
Oben