Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
880to884
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
880to884
880to884
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

überflüssige zeilen löschen

überflüssige zeilen löschen
27.06.2007 11:15:37
Michael
hallo an alle,
ich habe folgendes problem,
in einem excel sheet habe ich ca. 15000 zeilen mit ausgelesenen dateien aus verschiedenen ordnern.
ist es möglich zeileneinträge nach kriterien zu finden und zu löschen.
so das alle einträge/zeilen die im gleichen ordner liegen, immer nur bis zu 5 neueste einträge (datum und uhrzeit) im gleichen ordner stehen bleiben und alle restlichen gelöscht werden.
hier ein beispiel:
https://www.herber.de/bbs/user/43622.xls

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: überflüssige zeilen löschen
27.06.2007 14:58:08
Peter
Hallo Michael,
der beigefügte Code ist zwar lang und sicher nicht professionel, aber er funktioniert (bei mir zumindest).
Versuch's mal.

Sub Sortierkriterium()
Columns("C:C").Select
Selection.UnMerge
Range("A1:B1500").Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("C1").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISBLANK(RC[-2]),"""",IF(LEFT(RC[-1],6)LEFT(R[1]C[-1],6),LEFT(RC[-1],6)&5,IF( _
RIGHT(R[1]C,1)=""5"",(LEFT(RC[-1],6)&4),IF(RIGHT(R[1]C,1)=""4"",(LEFT(RC[-1],6)&3),IF(RIGHT(R[1]C,1)=""3"",(LEFT(RC[-1],6)&2),IF(RIGHT(R[1]C,1)=""2"",(LEFT(RC[-1],6)&1),""DEL""))))))"
Selection.Copy
Range("C1:C1500").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1:C1500").Select
Selection.Sort Key1:=Range("C1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("C1").Activate
Cells.Find(What:="DEL", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False).Activate
ActiveCell.Offset(0, -2).Range("A1:C1500    ").Select
ActiveCell.Activate
Selection.EntireRow.Delete
Range("A1:C1500").Select
Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Columns("C:C").Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select
Cells.Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range("A1:B1").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=LINKS($B2;6)LINKS($B1;6)"
With Selection.FormatConditions(1).Borders(xlBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=LINKS($B2;6)LINKS($B1;6)"
With Selection.FormatConditions(1).Borders(xlBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(2).Interior.Pattern = xlNone
Selection.Copy
Range("A2:B1500").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
End Sub


Anzeige
AW: überflüssige zeilen löschen
27.06.2007 22:53:13
Daniel
Hallo
dieser Code sollte deine 15000 einträge relativ zügig bearbeiten:

Sub Makro3()
Range("A:B").Insert
'--- Pfadbezeichnug aus Dateinamen extrahieren
Range("C1").CurrentRegion.Columns(1).Offset(0, -1).FormulaR1C1 = "=LEFT(SUBSTITUTE(RC[2],""\""," _
"|"",LEN(RC[2])-LEN(SUBSTITUTE(RC[2],""\"",""""))),FIND(""|"",SUBSTITUTE(RC[2],""\"",""|"",LEN(RC[2])-LEN(SUBSTITUTE(RC[2],""\"",""""))))-1)"
'--- nach Pfad und Datum absteigend sortieren
Range("b1").CurrentRegion.Sort key1:=Cells(1, 2), order1:=xlDescending, key2:=Cells(1, 3),  _
order2:=xlDescending, header:=xlNo
'--- Formel einfügen, die zulöschenden Einträge erhalten die Kennung WAHR
Range("C1").CurrentRegion.Columns(1).Offset(1, -1).FormulaR1C1 = "=IF(RC[1]R[-1]C[1],1,IF(R[- _
1]C>=5,TRUE,R[-1]C+1))"
Range("a1") = 1
'--- Formeln durch Werte ersetzen
Range("A:B").Formula = Range("A:B").Value
'--- Sortieren nach Lösch-Kennung (verbessert Performance bei grossen Datenmengen
Range("A1").CurrentRegion.Sort key1:=Cells(1, 1), order1:=xlAscending, header:=xlNo
'--- gekennzeichnete Daten löschen
Columns(1).SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
'--- Rücksortieren
Range("A1").CurrentRegion.Sort key1:=Cells(1, 2), order1:=xlAscending, key2:=Cells(1, 3),  _
order2:=xlAscending, header:=xlNo
'--- Hilfsspalten löschen
Range("A:B").Delete
End Sub


Gruß, Daniel

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige