Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
996to1000
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen löschen wenn x Spalten leer

Zeilen löschen wenn x Spalten leer
29.07.2008 21:26:22
Tomboy
Hallo zusammen,
ich habe folgendes Problem für das ich noch keine altagstaugliche Lösung gefunden habe.
Es geht um eine Tabelle in der in der ersten Spalte eine Artikelnummer steht und in den Spalten rechts davon (bis zu 12 Spalten) in denen die Umsätze zu den Artikelnummern stehen. Nun ist das Problem, dass es Artikel gibt auf die keine Umätze gebucht sind (in keinem der 12 Monate) und genau diese Artikel sammt Zeile möchte ich nun löschen (es sind über 2000 Artikel).
Mein bisheriger Ansatz ist über eine Summe nach der letzten Spalte, die Artikel kenntlich zu machen auf die keine Umsätze laufen, was aber im Altag immer nerviger wird.
Hier noch mal das Beispiel:
Artikelnummer 1Q 2Q 3Q 4Q
1 4 5
2 5 2
3
4 6
5 6
6 5 5
Ziel soll sein das die Zeile mit Artikelnummer 3 gelöscht wird, weil es keine Umsätze gibt.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Kleines Makro
29.07.2008 21:56:09
backowe
Hi,
VBA-Code:
Sub ZeilenLoeschen()
'Code in ein Modul
Dim Zelle As Range
For Each Zelle In Range("A" & Cells(Rows.Count, "A").End(xlUp).Row & ":A2")
  If Application.CountA(Range(Cells(Zelle.Row, "B"), Cells(Zelle.Row, "M"))) = 0 Then
    Zelle.EntireRow.Delete
  End If
Next
End Sub
Gruss Jürgen

Anzeige
AW: Kleines Makro
30.07.2008 08:06:16
Luschi
Hallo Jürgen,
auch wenn man den Range-Bereich so definiert: Set Zelle = Range("B20:M1") switcht Excel den Bereich um in
Range("B1:M20") und damit läuft die Schleife von Zeile 1 bis Zeile 20.
Dies ist beim Löschen von Zeilen Gift und führt zu falschen Ergebnissen.
Hier nun mein Vorschlag:

Sub ZeilenLoeschen_1()
'Code in ein Modul
Dim Zelle As Range, n1 As Long, n2 As Long
'letzte Zeile in Spalte A
n1 = Cells(Rows.Count, "A").End(xlUp).Row
For n2 = n1 To 2 Step -1
If Application.CountA(Range(ActiveSheet.Cells(n2, "B"), ActiveSheet.Cells(n2, "M"))) = 0  _
Then
ActiveSheet.Cells(n2, 1).EntireRow.Delete
End If
Next
End Sub

Gruß von Luschi
aus klein-Paris

Anzeige
Das muss ich mir merken, ist mir so ...
30.07.2008 08:59:07
backowe
Hi Luschi,
... noch nicht aufgefallen. Mir ist Deine Schreibweise :) zu unübersichtlich, also habe ich es so angepasst.
VBA-Code:
Sub ZeilenLoeschen()
'Code in ein Modul
Dim i As Long
For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
  If Application.CountA(Range(Cells(i, "B"), Cells(i, "M"))) = 0 Then
    Cells(i, "A").EntireRow.Delete
  End If
Next
End Sub
Gruss Jürgen

Anzeige
AW: Das muss ich mir merken, ist mir so ...
30.07.2008 11:20:45
Luschi
Hallo Jürgen,
wer mit Programmierung 'Geld' verdienen will, muß/sollte nicht immer den geraden Weg der Lehrbuch-Theorie folgen. Da es von M$ leider keinen vernünftigen Vba-Code-Schutz gibt (auch Excel 2007 hat nichts Neues zu bieten), schreibe ich den Code so, daß man schon Nachdenken muß darüber, was hier eigentlich passieren soll. Auch in den Hilfe-Foren kann ich meist 'leider!' davon nicht lassen.
Auf jeden Fall teste ich meine Lösungsvorschläge immer an einem konkreten Beispiel.
Gruß von Luschi
aus klein-Paris

Für mich ist Excel & VBA ein Hobby!
30.07.2008 12:07:00
backowe
Hallo Luschi,
mein Geld verdiene ich als Administrator in einem Callcenter. Mein Lehrbuch war das Lesen von Spotlight, Herber und MOF und natürlich auch durch das Beanworten von irgendwelchen Threads in den genannten Foren, also mehr oder weniger "learning by doing". Ich bin durch Zufall zu VBA gekommen, da im Rahmen meiner Tätigkeit, eine Anforderung die an mich gestellt wurde, nicht mit Formeln bewältigen konnte.
Ich habe meinen Code auch getestet, aber ich hatte nur 3 Zeilen zu löschen und bei einem Intel E6750 mit 3 GByte RAM ist da nicht viel zu sehen. :) Also mir ist es nicht aufgefallen, daß der Code von "oben nach unten gelaufen" ist, deswegen habe ich jetzt auch wieder den "Einzelschrittmodus" zwischen meinen Ohren aktiviert. ;o)
Gruss Jürgen
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige