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

Forumthread: Zeilen löschen über VBA

Zeilen löschen über VBA
15.01.2016 09:24:05
Norbert
Hallo Spezialisten
in einer Tabelle, in der bis zu 8'000 Datensätze stehen können
https://www.herber.de/bbs/user/102792.xlsx
sollte folgender Automatismus über ein VBA-Script ausgeführt werden.
1. wenn in der Spalte B kein Wert steht, dann ganze Zeile löschen.
2. Innerhalb der gleichen Materialnummer (Spalte A) soll in der Spalte C nur ein gleicher Wert, und zwar derjenige mit dem jüngsten Datum (Spalte Z) stehen bleiben, alle anderen Zeilen können gelöscht werden.
3. anschliesend sortieren: 1. nach Spalte A aufsteigernd, 2. nach Spalte C aufsteigend,
4. Nach jeder Gruppe in Spalte A eine Leerzeile einfügen
ist das so machbar? Danke für eure Hilfe

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zeilen löschen über VBA
15.01.2016 10:43:14
UweD
Hallo
hier ein Makro.
Das Sortieren kann als erstes erfolgen. Das erleichtert dann auch die Abarbeitung :-)

Option Explicit
Sub TT()
On Error GoTo Fehler
Dim TB, i%, LR&
Set TB = ActiveSheet
Application.ScreenUpdating = False
With TB
LR = .Cells(Rows.Count, 1).End(xlUp).Row 'letzte Zeile der Spalte A
'sortieren
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("A:A"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("C:C"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("Z:Z"), SortOn:=xlSortOnValues, _
Order:=xlDescending, DataOption:=xlSortNormal
.Sort.SetRange Range("A1:Z" & LR)
.Sort.Header = xlYes
.Sort.MatchCase = False
.Sort.Orientation = xlTopToBottom
.Sort.SortMethod = xlPinYin
.Sort.Apply
For i = LR To 2 Step -1
If .Cells(i, 2) = "" Then
.Rows(i).Delete xlUp
i = i - 1
End If
Do Until WorksheetFunction.CountIfs(.Columns(1), .Cells(i, 1), .Columns(3), .Cells( _
i, 3)) = 1
.Rows(i).Delete xlUp
i = i - 1
Loop
If .Cells(i, 1)  .Cells(i - 1, 1) Then .Rows(i).Insert
Next
End With
'*** Fehlerbehandlung
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Gru0ß UweD

Anzeige
AW: Zeilen löschen über VBA
15.01.2016 10:53:50
Norbert
Perfekt - funktioniert auf Anhieb
Besten Dank und ein schönes Wochenende
Norbert
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige