online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Renatus vom 12.11.2019, 14:28 Options

Lösung

bestimmte Excel-Zeilen löschen

Hallo,

ich benötige ein Makro, das nur die Zeilen löscht, die ausschließlich in Spalte A einen Wert haben, also in keiner anderen Spalte (da sind die Zellen leer). Kann bitte jemand helfen?

Tausend Dank im voraus.

Gruß

Renatus


Antwort schreiben

Antwort 1 von gast123 vom 12.11.2019, 15:22 Options

hi all

den makrorecorder kann bestimmt jeder bedienen,fasse dieses makro dann in eine wiederholungschleife

gruss gast123

p.s.
tip fuer vb helfer
lege spalte a in ein array und taste dieses ab,sollte es immernoch zu langsam sein ,nutze ein dictionary object

Antwort 2 von Renatus vom 12.11.2019, 15:47 Options

???

Vielleicht bin ich ja nur zu blöd, aber mit diesem Tip kann ich leider nichts anfangen. Wie soll das denn mit dem Makrorekorder gehen? Es ist doch zu prüfen, ob nur in Spalte A etwas steht oder noch in einer anderen.

Übrigens brauche ich das ganze nicht nur einmalig, denn die Tabelle ist dynamisch.

Gibt es da vielleicht etwas in VBA?

Antwort 3 von Marie vom 12.11.2019, 18:46 Options

Ja , Du sagst nur, wieviel tausend Spalten können denn beschriftet sein?? Wenn Du mal eine maximale Anzahl nennen könntest, die überprüft werden muss, dann wär das gar kein Problem. Wenn aber der erste Wert in Spalte 325 stehen kann oder noch weiter rechts, dann ist das nicht mehr so lustig.

Gruß marie

Antwort 4 von Renatus vom 12.11.2019, 19:57 Options

Hallo,

realistisch ist ein Eintrag innerhalb der ersten 200 Spalten. Ich hoffe, das hilft weiter....

Gruß

Renatus

Antwort 5 von Marie vom 12.11.2019, 20:08 Options

Und die Spalte A, ist die überall ausgefüllt? Das heisst, kann ich so viele Zeilen überprüfen, bis die erste leere Spalte A kommt?

Lass Dir doch nicht alles aus der Nase ziehen, um zu wissen wie man Dir helfen kann muss man doch wissen was man alles überprüfen muss. oder soll ich 65 000 Zeilen und 200 Spalten überprüfen??

Gruß Marie

Antwort 6 von Marie vom 12.11.2019, 20:56 Options

Also ich gehe jetzt davon aus, dass Du so sortiert hast, dass keine Datensätze vorhanden sind, die in Spalte A nichts stehen haben, dann überprüfe ich 200 Spalten und höre auf, wenn in Spalte A nix mehr drinsteht. Falls Du nicht bei zeile 1 beginnen musst ändere das entsprechend:

Public Sub loeschenZeilen()
Dim zeile As Integer
Dim inti As Integer

zeile = 1
While Tabelle1.Cells(zeile, 1) <> ""
For inti = 2 To 200
If Tabelle1.Cells(zeile, inti) <> "" Then Exit For
If inti = 200 Then
ActiveSheet.Rows(zeile).Delete
zeile = zeile - 1 ' Da die ganze zeile gelöscht wird und jetzt dieselbe zeilennummer überprüft wrden muss
End If
Next
zeile = zeile + 1
Wend
End Sub

Bitte zuerst in einer Probedatei ausprobieren

Gruß Marie

Antwort 7 von Renatus vom 12.11.2019, 21:56 Options

Hallo,

ich habe mal die ganz leeren Zeilen gelöscht, damit Maries Voraussetzung paßt. Aber das Makro löscht auch Zeilen, mit einem Wert in Spalte B. Außerdem landet es in einer Endlosschleife. Trotzdem danke für die Bemühungen.

Gruß

Renatus

Antwort 8 von Renatus vom 12.11.2019, 22:47 Options

Kann man das ganze nicht lösen, indem man alle Zeilen löscht, die genau einen Wert haben? (Nämlich den aus Spalte A) Als Funktion kommt mir da "ANZAHL2(A:variable;IV:variable)" in den Sinn. Man müßte nur die Zeilen löschen, in denen dieser Wert gleich 1 ist. Übrigens ist es mir egal, ob die Zeilen gelöscht oder nur ausgeblendet werden. Das Ausblenden geht vielleicht leichter.

Ich weiß aber nicht, wie man das als Makro schreiben kann.

Gruß

Renatus

Antwort 9 von Renatus vom 12.11.2019, 23:08 Options

Application.WorksheetFunction.CountA könnte evtl. nützlich sein?!?

Antwort 10 von Marie vom 12.11.2019, 23:18 Options

While Tabelle1.Cells(zeile, 1) <> ""

Also wenn Du natürlich das ganze in Tabelle 2 schreibst, dann läuft das natürlich nicht wie es soll.
da ich geschrieben habe

ActiveSheet.Rows(zeile).Delete

Also entweder schreibste überall ActiveSheet oder überall Tabelle1 oder wie auch immer Deine Tbelle heisst, aber wenn Du das korrekt so schreibst, wie es sein soll, kann das weder in einer Endlosschleife landen wegen
While Tabelle1.Cells(zeile, 1) <> ""

noch If Tabelle1.Cells(zeile, inti) <> "" Then Exit For noch Zeilen löschen, die usser in A einen Inhalt haben. Also bitte ein ganz klein wenig mitdenken und entsprechend abändern, wenn Deine Daten in Tabelle 4 stehen musste natürlich statt Tabelle 1 Tabelle 4 schreiben!!!

Gruß Marie

Antwort 11 von Marie vom 12.11.2019, 23:23 Options

Äh, Du schreibst das als Visual Basic Code in die tabelle, wo Deine Texte stehen und statt Tabelle 1 schreibst Du, wie oben bereits gesagt, dann den namen Deiner Tabelle rein.

Jetzt klar??

Gruß Marie

Antwort 12 von Renatus vom 13.11.2019, 20:58 Options

Hi,

es hat funktioniert. Vielen lieben Dank!

Renatus

Antwort 13 von Renatus vom 25.11.2019, 22:46 Options

Hi,

weiter oben habe ich geschrieben:

Zitat:
...ich habe mal die ganz leeren Zeilen gelöscht, damit Maries Voraussetzung paßt.

Wäre super, wenn das (ansonsten wunderbar laufende) Makro diesen Job (also alle leeren Zeilen von 1 bis 200 zu löschen) auch übernehmen würde.

Schöne Grüße

Renatus

Antwort 14 von Marie vom 26.11.2019, 23:50 OptionsLösung

Lösung
kein Problem:das hättest Du eigentlich bereits selbst hinkriegen können:

Du willst alle zeilen löschen in denen entweder gar nichts steht, oder in Spalte 1 etwas steht und sonst nirgendwo? Also ignoriere doch einfach die Spalte 1: Du willst alle Zeilen löschen zwischen 1 und 200 in denen gar nichts steht ab Spalte 2 bis 200.
Also ändere ab :

Gruß Marie

Public Sub loeschenZeilen()
Dim zeile As Integer
Dim spalte As Integer
Dim inti As Integer


zeile = 1
spalte = 2
For inti = 1 To 200
For spalte = 2 To 200
If Tabelle1.Cells(zeile, spalte) <> "" Then Exit For
If spalte = 200 Then
ActiveSheet.Rows(zeile).Delete
zeile = zeile - 1 ' Da die ganze zeile gelöscht wird und jetzt dieselbe zeilennummer überprüft wrden muss
End If
Next
zeile = zeile + 1
Next
End Sub

Antwort 15 von Renatus vom 28.11.2019, 19:24 Options

Danke sehr. Scheint zu klappen.

Antwort 16 von Renatus vom 28.11.2019, 20:46 Options

Entschuldige bitte. Mir ist gerade noch eine Verbesserungsmöglichkeit eingefallen.

Ich möchte gerne alle Zeilen löschen in denen entweder gar nichts oder eine Zahl steht, oder in Spalte 1 etwas steht und sonst nirgendwo. Wäre super. :-)))

Antwort 17 von Marie vom 29.11.2019, 11:50 Options

Wie?? Irgendwo in der Prärie irgendeine Zahl und nirgendwo in der Zeile eine zweite? Oder was?

Wenn ja kein Problem, dannmusst Du diese Zeile ausbauen:
If Tabelle1.Cells(zeile, spalte) <> "" Then Exit For

einen Zähler = 0 rein, wenn ein Eintrag gefunden wird prüfen ob der Eintrag eine Zahl ist, wenn ja, dann zähler = 1 und weitersuchen. Beim nächsten Eintrag Exit For

Wenn am Ende immer noch zähler = 1, dann Zeile löschen.

Sag erst, ob ich das richtig verstanden habe, und probier mal alleine.

Gruß Marie

Antwort 18 von Renatus vom 29.11.2019, 15:33 Options

Danke sehr. Ich hab´s auf Umwegen hinbekommen.

Ähnliche Themen

Zeilen löschen
Aloha089  14.02.2007 - 79 Hits -

Excel in PDF umwandeln
czauner  20.03.2007 - 410 Hits -

Excel alle Zeilen löschen außer...
Fridolin123  25.03.2007 - 124 Hits - 5 Antworten

Excel Zeilen löschen
Smart79  07.09.2007 - 290 Hits -

Excel hat 65.536 Zeilen
Rolando  27.11.2007 - 173 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026