Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1052to1056
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
Alee Zeilen bis auf bestimmte löschen
25.02.2009 11:09:02
Silke
Hallo,
in meiner Liste muss ich Zählerstände den Kostenstellen zuordnen.
https://www.herber.de/bbs/user/59754.xls
Ich importiere eine TXT-Datei, die ich vom Drucker exportiere ins Excel. Leider sind viele Zeile dabei, die ich für die Auswertung nicht brauche.
In meiner Liste seht ihr, dass ich eigentilch nur die Blau- und Gelbmarkierten Zeilen benötige.
Gibt es eine Möglichkeit alle anderen zu löschen?
Vielen Dank schonmal
Silke

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alee Zeilen bis auf bestimmte löschen
25.02.2009 11:15:09
DirkP
Über ein Makro, was nach "Farbe" in den Zellen schaut.
Wäre Makro eine Idee oder soll das ohne Makro laufen ?
AW: Alee Zeilen bis auf bestimmte löschen
25.02.2009 11:22:50
Silke
Hallo,
Makro wäre auf jeden Fall eine Idee.
Würde es auch irgendwie ohne Farbe gehen?
Sonst wäre es auch nicht schlimm, dann markiere ich erst die Zeilen und anhand dem kann man alles andere löschen.
AW: Alee Zeilen bis auf bestimmte löschen
25.02.2009 11:43:53
DirkP
Silke,
ich hoffe Du kommst hiermit zurecht:

Private Sub CommandButton1_Click()
Dim LetzteZeile
Dim i, j
LetzteZeile = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
letztespalte = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
For i = LetzteZeile To 1 Step -1
For j = 1 To letztespalte
If Sheets(1).Cells(i, j).Interior.ColorIndex > 0 Then
MsgBox (Sheets(1).Cells(i, j).Interior.ColorIndex)
Sheets(1).Rows(i).Delete
End If
Next
Next
End Sub


Das hab ich gerade über ne User-Form gemacht, deshalb command_click .. kannste in ein Makro kopieren, ein bißchen aufpassen, dass Sheets(1) auch das richtige ist ...eventuell wegen der Farben nachschauen, ob auch wirklich >0 sein soll und dann klappt das schon.
Ahm - und falls es wichtige Daten sind, vor dem Ausprobieren die Datei kopieren *g*

Anzeige
AW: Alee Zeilen bis auf bestimmte löschen
25.02.2009 11:46:46
DirkP
Ach .. ich les gerade, du brauchst nur die blauen und gelben ... dann muss der code anders lauten:
If Sheets(1).Cells(i, j).Interior.ColorIndex = 0 Then
sorry, ist ja gerade Mittag ;-)
AW: wenn markieren von Hand, dann mit Autofilter
25.02.2009 11:45:37
Hand,
Hi
wenn du schon die Zeilen makrierst, dann doch einfach für die, die stehenbleiben sollen ein "x" in die Spalte F setzen und dann mit dem Autofilter nach "Leere" filtern. Diese Zeilen dann löschen und den Autofilter wieder aufheben
vielleicht kannst du ja auch eine Formel entwerfen, die Entscheiden kann, ob die Zeile gelöscht werden muss oder nicht. dann könntest du einfach diese Formel eintragen, nach unten kopieren, filtern und löschen
für so eine Formel könntest du folgendermassen vorgehen:
- Spalte A markieren und BEARBEITEN - GEHE ZU - INHALTE - LEERZELLEN klicken
- in die erste markierte Zelle die Formel (sinngemäß) "=Zelle obendrüber" eintragen und Eingabe mit STRG+ENTER abschließen, die Formel steht dann in allen zuvor leeren markierten Zellen.
- in Spalte F folgende Formel eintragen und nach unten kopieren:

=ODER(LINKS(A1;3)="Acc";UND(A1="Color";ODER(C1="Full Color";C1="Black")))


- Anschließend Spalte F nach FALSCH filtern und diese Zeilen löschen, anschließend Filter wieder aufheben
- Spalte F löschen
Gruß, Daniel

Anzeige
AW: wenn markieren von Hand, dann mit Autofilter
25.02.2009 13:08:37
Hand,
Hallo,
danke für den code.
Leider tut sich nichts in meiner Excel-Datei.
So steht er nun bei mir drin:
Dim LetzteZeile
Dim i, j
LetzteZeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
LetzteSpalte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
For i = LetzteZeile To 1 Step -1
For j = 1 To LetzteSpalte
If Sheets(1).Cells(i, j).Interior.ColorIndex = 0 Then
MsgBox (Sheets(1).Cells(i, j).Interior.ColorIndex)
Sheets(1).Rows(i).Delete
End If
Next
Next
AW: wenn markieren von Hand, dann mit Autofilter
25.02.2009 13:10:02
Hand,
Hallo,
danke für den code.
Leider tut sich nichts in meiner Excel-Datei.
So steht er nun bei mir drin:
Dim LetzteZeile
Dim i, j
LetzteZeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
LetzteSpalte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
For i = LetzteZeile To 1 Step -1
For j = 1 To LetzteSpalte
If Sheets(1).Cells(i, j).Interior.ColorIndex = 0 Then
MsgBox (Sheets(1).Cells(i, j).Interior.ColorIndex)
Sheets(1).Rows(i).Delete
End If
Next
Next
Anzeige
AW: Code, der aus selbst herausfindet
25.02.2009 14:15:25
Daniel
was gelöscht werden muss:
probier mal das hier:

Sub Makro1()
Cells(1, 2).Value = "x"
Columns("A:B").SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
Columns("E:E").SpecialCells(xlCellTypeConstants).Offset(0, 1).FormulaR1C1 = _
"=IF(AND(RC1=""Color"",RC2=""Total"",OR(RC3=""Full Color"",RC3=""Black"")),"""",TRUE)"
Columns("F:F").SpecialCells(xlCellTypeFormulas, 4).EntireRow.Delete
Columns("B:B").SpecialCells(xlCellTypeFormulas, 16).ClearContents
Cells(1, 2).ClearContents
End Sub


ansonsten würde ich dir davon Abraten, die zu löschenden Zellen mit Farbe zu markieren.
die Farben und die Index-Nummern der Farben können sich von schon mal ändern, auf deinem Rechner ist Blau 4 und auf dem nächsten Blau 15.
Wenn, dann lieber mit nem x in einer extra Spalte und dann einfach den Autofilter verwenden.
Gruß, Daniel

Anzeige
AW: optimiert Code, der selbst herausfindet
25.02.2009 14:27:13
Daniel
Hi
Ordnung muss sein, daher der Code nochmal etwas überarbeitet:

Sub Makro1()
Cells(1, 2).Value = "x"
Columns("A:B").SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
Columns("E:E").SpecialCells(xlCellTypeConstants).Offset(0, 1).FormulaR1C1 = _
"=IF(AND(RC1=""Color"",RC2=""Total"",OR(RC3=""Full Color"",RC3=""Black"")),"""",TRUE)"
Columns("F:F").SpecialCells(xlCellTypeFormulas, 4).EntireRow.Delete
Columns("F:F").ClearContents
Columns("B:B").SpecialCells(xlCellTypeFormulas, 16).ClearContents
Cells(1, 2).ClearContents
End Sub


Gruß, Daniel

Anzeige
AW: optimiert Code, der selbst herausfindet
26.02.2009 09:18:24
Silke
Super danke, so hab ich mir das vorgestellt.
1000 DANK
Viele Grüße
Silke
AW: optimiert Code, der selbst herausfindet
26.02.2009 09:29:30
Silke
Hallo Daniel,
Dein code ist super!!!
jetzt hab ich doch noch ne Frage:
Kann man noch die Möglichlichkeit einbauen, dass wenn die Kopienzähler 0 sind, dass diese Kostenstellen dann auch ausgeblendet werden?
DANKE schon mal
Silke
AW: optimiert Code, der selbst herausfindet
27.02.2009 00:16:30
Daniel
Hi
das lässt sich sicherlich machen.
du musst halt eine Formel entwickeln, die alle Zeilen, die gelöscht werden sollen mit WAHR kennzeichnet und alle, die Stehenbleiben sollen, mit einer Leerzelle.
(dabei brauchst du die Zeilen mit "Account" nicht berücksichtigen, diese bleiben immer stehen.)
um dir meine Formel mal anzuschauen , gehst du am besten mal das Makro im Einzelstepmodus durch und hälst vor Ausführung der Zeile "Columns("F:F").SpecialCells(xlCellTypeFormulas, 4).EntireRow.Delete" an.
dann kannst du dir die Formel in Ruhe anschauen, verstehen und deine eigene entwickeln (am besten direkt in Excel)
Wenn deine Formel das gewünschte Ergebnis liefert (dh alle zu löschenden Zeilen sind mit WAHR gekennzeichnet), überträgst du sie in das Makro.
um den korrekten Formeltext in R1C1-Schreibweise zu erhalten, markierst du einfach eine Zelle mit der Formel und gibst im Direktfenster den Befehl ?Selection.FormulaR1C1 ein.
das Ergebnis kannst du dann ins Makro anstelle der alten Formel kopieren.
Achtung: Anführungszeichen, die zur Formel gehören, müssen im Makro doppelt eingegeben werden.
Gruß, Daniel
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige