Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeilen automatisch löschen

Zeilen automatisch löschen
09.01.2013 11:45:43
Stefan
Hallo zusammen,
ich habe eine Tabelle mit etwa 3000 Zeilen und 8 Spalten. Nun würde ich gerne erreichen, dass alle Zeilen die in 7 der 8 Spalten (Kriterien) einen identischen Inhalt haben, gelöscht werden und nur noch 1 Zeile übrig bleibt - und zwar jene mit dem höchsten Zahlenwert.
Ein Bsp. in Bezug auf die angeängte Testtabelle (zu finden unter: https://www.herber.de/bbs/user/83306.xlsx ):
- Die Spalte "Stadtgröße" soll diejenige Spalte sein, die nicht identisch sein muss.
- "Land" und "Richtung" sollen identisch sein.
- Es soll nur 1 Zeile für identsche Ausprägungen unter "Land" und "Richtung" übrig bleiben - und zwar jene mit dem höchsten Wert.
- Für die erste Kategorie "Land = Deutschland" und "Richtung = Nord" wäre dies, da der Wert für "Deutschland, Nord, Großstadt" am höchsten ist, die Zeile "Deutschland, Nord, Großstadt".
- Die Zeile "Deutschland, Nord, Kleinstadt, Anzahl" soll gelöscht werden.
- Zu beachten ist, dass die Tabelle nicht immer alle Ausprägungen aufführt, d.h. es können beispielsweise auch Zeilen komplett fehlen (siehe Dänemark, wo das Kriterium NORD komplett fehlt und für "Dänemark, West, Kleinstadt" nur eine Zeile vorhanden ist).
Bitte entschuldigt die komplizierte Erklärung. Ich hoffe mein Anliegen wird deutlicher, wenn ihr einen Blick auf das ebenfalls im Anhang eingepflegte Wunsch-Ergebnis werft.
Liebe Grüße
Stefan

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen automatisch löschen
09.01.2013 12:11:38
Klaus
Hi Steffan,
aufgrund deines Levels ohne VBA:
in deiner Beispieltabelle:
E3: =A3&B3
F2: "FILTER" (oder irgend eine Überschrift)
F3: {=MAXA(WENN(E:E=E3;D:D))=D3}
Matrixformeln: {} nicht mit eingeben, sondern Formel mit STRG+SHIFT+ENTER abschließen
markiere F3:F16 (bzw F3:letzte-Zeile-in-F) an, setze hier den Autofilter. Filtere alle Ergebnisse "WAHR". Kopiere die gefilterte Liste an einen Ort deiner Wahl.
Erklärung: in E erstelle ich mir einen Code, der alle Kriterien zusammenfasst. In F schaue ich, ob hier die höchste Zahl zu diesem Code vorliegt. (das geht einfacher, als 2-7 Spalten einzeln zu prüfen und in der Matrix zu verketten).
Grüße,
Klaus M.vdT.

Anzeige
AW: Zeilen automatisch löschen
10.01.2013 10:50:32
Stefan
Hallo Klaus,
danke für Deine Rückmeldung.
Ich hätte noch eine kleine Erweiterung:
Wenn der Unterschied zwischen dem höchsten und dem zweithöchsten Wert mehr als 10% ist, soll gelten, was bisher galt, sprich: die Zeile soll gelöscht werden.
Wenn der Unterschied zwischen dem höchsten und dem zweithöchsten Wert allerdings geringer als 10% ist, wäre gut, wenn eine manuelle Entscheidung getroffen werden könnte. Wäre es möglich, dass Zeile mit dem zweithöchsten Wert dann nicht direkt gelöscht wird, sondern z.B. gelb markiert wird (damit man diese visuell schnell erkennt und manuell eine Entscheidung fällen kann)?
Ich hoffe, ich konnte deutlich machen, was gemeint ist.
Herzlichen Dank und liebe Grüße
Stefan

Anzeige
AW: Zeilen automatisch löschen
10.01.2013 11:37:13
Klaus
Hi Stefan,
formuliere doch bitte die Aufgabe das nächste mal gleich vollstandig! Mein Matrixformel-Ansatz ist da kaum zu gebrauchen, damit ist die Energie die ich investiert habe um dir zu helfen jetzt für die Tonne, das frustriert.
Wenn der Unterschied zwischen dem höchsten und dem zweithöchsten Wert allerdings geringer als 10% ist, wäre gut, wenn eine manuelle Entscheidung getroffen werden könnte. Wäre es möglich, dass Zeile mit dem zweithöchsten Wert dann nicht direkt gelöscht wird, sondern z.B. gelb markiert wird (damit man diese visuell schnell erkennt und manuell eine Entscheidung fällen kann)?
Das eine Formel sowas nicht kann weisst du selber!
Ich würd da jetzt so vorgehen: (ich gehe davon aus, dass die Ursprungsliste nicht verändert oder sortiert werden darf).
in Vba ein Script schreiben dass folgendes macht:
- Alles in ein leeres Tabellenblatt kopieren
- mit =A3&B3 den Code anlegen oder gleich nach den benötigten Feldern in der Reihenfolge kopieren.
- alle größten Werte grün färben, alle zweitgrößten gelb, alle 3tt bis n-t größten Werte löschen (und eventuell dabei deine 10% Regel beachtet)
- neben jeden grünen Wert in einer freien Spalte das Wort "WAHR" schreibt
- eine Messagebox zeigt, in der steht: "Bitte entscheiden für die gelben Felder" oder so ähnlich.
Dann per Hand neben jedes Gelbe Feld WAHR oder FALSCH schreiben, oder einfach WAHR für jedes das gehalten werden soll.
ein neues Makro starten, welches:
- die Liste nach "WAHR" filtert
- die gefilterte Liste an die gewünschte Stelle kopiert.
Das mache ich aber jetzt nicht für dich, da deine Beispieldatei in Zeilen und Spalten von deiner Masterdatei abweicht und es dann eh nichts bringt. Du kannst aber die meisten der o.g. Vorgänge per Makrorekorder aufzeichnen, die Farbmarkierung bekommst du über Formeln (Matrix-Max-Wenn) selber hin.
Grüße,
Klaus M.vdT.

Anzeige
AW: Zeilen löschen mit Duplikate entfernen
09.01.2013 13:37:24
Daniel
Hi
sortiere die "Datei" nach "Land", Richtung und auf jeden fall nach "Anzahl".
nach Anzahl musst du Absteigend sortieren (so daß die grösste Zahl oben steht)
dann markierst du die Tabelle und wendest du die Funktion DATEN - DATENTOOLS - DUPLIKATE ENTFERNEN an.
hierbei gibst du die Spalte mit "Land" und "Richtung" als Kriterium an.
für die Umsetztung als Makro kannst du gut den Recorder verwenden.
Gruß Daniel

Anzeige
AW: Zeilen löschen mit Duplikate entfernen
10.01.2013 10:52:04
Stefan
Hallo Daniel,
danke für die einfache und tolle Lösung. War ja doch so einfach... :-)
Allerdings habe ich Klaus eben noch eine Erweiterung vorgeschlagen. Bei dieser läuft Deine einfache Variante vermutlich leider fehl oder siehst du auch hier eine Möglichkeit?
Danke und Grüße
Stefan

Anzeige
AW: Zeilen löschen mit Duplikate entfernen
10.01.2013 13:05:55
Daniel
Hi
das kann man schon damit lösen, man muss dann halt noch kreativ werden und sich ein paar Formeln ausdenken, mit denen man in Hilfsspalten die Zellen entsprechend markieren kann.
das könnte in deinem Fall so aussehen:
(in Spalte A stehe das Land, in Spalte B die Richtung und in Spalte D der Wert)
1. sortieren nach A, B und absteigend nach D.
2. folgende Formel in Spalte E (für Zeile 2), diese Formel nummeriert die Einträge durch:
=Wenn(Und(A1=A2;B1=B2);E1+1;1)
3. folgende Formel in Spalte F (wieder für Zeile 2):
=Wenn(E>2;0;Wenn(E2=1;Zeile();Wenn(D2/D1>0,9;Zeile();0)))

diese Formel markiert alle Zeilen, die gelöscht werden sollen mit 0 und alle, die stehenbleiben sollen mit der Zeilennummer (einem eindeutigen Wert)
dh. der grösse Eintrag einer Gruppe (mit 1 in Spalte E) bekommet die Zeilennummer, alle anderen werte die 0. Für die zweitgrössten Werte wird je nach grösse Entschieden, ob 0 oder Zeilennummer in die Zelle kommt.
jetzt kannst du noch von Hand die Spalte F überprüfen und bei allen zweitgrössten Werten, bei denen in F die Zeilennumer steht, diese durch die 0 ersetzen, falls diese noch gelöscht werden sollen.
4. Schreibe jetzt noch in Zelle F1 die 0.
5. Markiere die ganze Tabelle und wende die Funktion DUPLIKATE ENTFERNEN an mit der Spalte F als Kriterium.
Gelöscht werden alle Zeilen, in denen die 0 steht (mit ausnahme der ersten Überschriftenzeile)
das geht auch schnell und einfach, man muss halt nur ein bissen selber denken und kreativ mit den vorhandenen Funktionen umgehen können.
Gruß Daniel
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen automatisch löschen in Excel


Schritt-für-Schritt-Anleitung

  1. Daten vorbereiten: Stelle sicher, dass deine Daten in einer Excel-Tabelle gut strukturiert sind. Du solltest eine Spalte für "Land", "Richtung" und die Werte haben.

  2. Spalten sortieren: Sortiere die Tabelle zuerst nach den Spalten "Land", "Richtung" und dann absteigend nach der Werte-Spalte. Das hilft, die größten Werte oben zu haben.

  3. Hilfsspalten einfügen: Füge zwei neue Spalten ein, um die Einträge zu nummerieren und die zu löschenden Zeilen zu kennzeichnen.

    • In der ersten Hilfsspalte (z.B. Spalte E) verwende die Formel:
      =WENN(UND(A1=A2;B1=B2);E1+1;1)
    • In der zweiten Hilfsspalte (z.B. Spalte F) füge die folgende Formel ein:
      =WENN(E2>2;0;WENN(E2=1;ZEILE();WENN(D2/D1>0,9;ZEILE();0)))
  4. Filtern und Löschen: Markiere die gesamte Tabelle, gehe zu "Daten" > "Duplikate entfernen" und wähle die Hilfsspalte F aus. Dadurch werden alle Zeilen gelöscht, die mit 0 gekennzeichnet sind.


Häufige Fehler und Lösungen

  • Fehler: Excel zeigt an, dass die „Zeilen können nicht gelöscht werden“.

    • Lösung: Überprüfe, ob deine Daten als Tabelle formatiert sind oder ob Filter aktiviert sind. Deaktiviere die Filter und versuche es erneut.
  • Fehler: Die Formel gibt keinen korrekten Wert zurück.

    • Lösung: Stelle sicher, dass alle Zellreferenzen korrekt sind und die Formeln richtig eingegeben wurden, insbesondere bei der Verwendung von Matrixformeln.

Alternative Methoden

  • VBA-Skript: Wenn du häufig leere Zeilen löschen möchtest, kannst du ein einfaches VBA-Skript erstellen, um dies automatisch zu erledigen. Ein Beispiel für ein VBA-Skript könnte so aussehen:

    Sub LeereZeilenLoeschen()
      Dim rng As Range
      Dim i As Long
    
      Set rng = ActiveSheet.UsedRange
      For i = rng.Rows.Count To 1 Step -1
          If Application.WorksheetFunction.CountA(rng.Rows(i)) = 0 Then
              rng.Rows(i).Delete
          End If
      Next i
    End Sub
  • Filter nutzen: Verwende die Filterfunktion, um nur die Zeilen anzuzeigen, die du behalten möchtest, und lösche die restlichen manuell.


Praktische Beispiele

  1. Leere Zeilen automatisch löschen: Um leere Zeilen in einer Tabelle zu entfernen, verwende die Funktion „Duplikate entfernen“ oder das oben genannte VBA-Skript.

  2. Doppelte Werte löschen: Wenn du doppelte Werte in einer bestimmten Spalte löschen möchtest, markiere die Spalte und gehe zu „Daten“ > „Duplikate entfernen“. Wähle die Spalten aus, die die Kriterien für Duplikate definieren.


Tipps für Profis

  • Matrixformeln: Nutze Matrixformeln, um komplexere Berechnungen durchzuführen. Denke daran, die Formeln mit STRG + SHIFT + ENTER abzuschließen.

  • Namen definieren: Verwende benannte Bereiche für deine Daten, um die Formeln übersichtlicher zu gestalten.

  • Automatisierung: Automatisiere wiederkehrende Aufgaben mit VBA, um Zeit zu sparen und die Effizienz zu steigern.


FAQ: Häufige Fragen

1. Wie kann ich leere Zeilen automatisch löschen? Du kannst das VBA-Skript verwenden oder die Funktion „Duplikate entfernen“ in Excel nutzen, um leere Zeilen schnell zu löschen.

2. Was tun, wenn Excel beim Löschen von Zeilen eine Fehlermeldung anzeigt? Überprüfe, ob deine Tabelle als Excel-Tabelle formatiert ist oder ob Filter aktiviert sind. Deaktiviere die Filter und versuche es erneut.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige