Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

bestimmte Excel-Zeilen löschen





Frage

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 1 von gast123

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

???

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

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

Hallo,

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

Gruß

Renatus

Antwort 5 von Marie

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

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

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

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

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

Antwort 10 von Marie

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

Ä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

Hi,

es hat funktioniert. Vielen lieben Dank!

Renatus

Antwort 13 von Renatus

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

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

Danke sehr. Scheint zu klappen.

Antwort 16 von Renatus

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

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

Danke sehr. Ich hab´s auf Umwegen hinbekommen.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: