Clever-Excel-Forum

Normale Version: Excel vba: Zeilen im Autofilterbereich auswählen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

könnte ich bitte mal wieder Eure Hilfe beanspruchen?

In einer ellenlangen Liste mit mehreren tausend Zeilen kommen eine unterschiedlich Anzahl von Doppel-Einträgen vor.
Die Doppel-Einträge habe ich bereits mittels Makro ermittelt und die Zellen wo sie vorkommen rot hinterlegt. Aber immer nur eine Zelle der Doppelten wird rot hinterlegt.
Mit dem Autofilter filtere ich dann auf einen bestimmten Wert in Liste - jetzt werden mir alle doppelten Werte angezeigt - der rot hinterlegte Block und der nicht farblich hinterlegte Block der doppelten Werte.

Was ich nun bräuchte ist ein automatische Selectierung (mit vba) aller rot hinterlegten Zellen - die anschließend gelöscht werden sollen. Selectieren deshalb, weil ich vor dem löschen noch einen Blick auf die Auswahl haben möchte.

Also einfach ausgedrückt - in einem gefilterten Bereich sollen alle roten Zeilen ausgewählt werden.

Habt Ihr mir ev. dazu einen Lösungsvorschlag?

Vielen Dank!
Hallo Erich,

wozu markierst Du die Zellen erst rot und selektierst sie nicht gleich?

Gruß Uwe
Hallo,

Du bist jetzt schon so lange dabei und hast immer noch nicht kapiert, daß man,
will man Hilfe zu einem bestehenden Makro haben, dieses auch zeigen sollte?

Traurig, traurig, traurig. :16: :22:
Hallo Uwe,

Du hast recht das ist eine Möglichkeit - möchte die Daten aber zunächst nochmals in Augenschein nehmen bevor sie gelöscht werden sollen.
Sozusagen ein Doppelcheck.
Hallo Erich,

oder so, aber jedenfalls hast Du ja schon eine Routine, welche diese Zellen herausfindet.

Gruß Uwe
Hallo Käpt'n,

guter Einwand - wenn ich bereits ein Grundgerüst hätte würde ich es auch gerne herzeigen.

Aber das Modul für das "rot" markieren kann ich zeigen.
Ist ursprünglich von H. Hennekes und habe es mit meinen bescheidenen Kenntnissen etwas abgeändert.

Code:
Public Sub Doppelte_Farbmarkierung()
'################################################
'Code für ein allgemeines Modul
'Autor: Jürgen Hennekes
'################################################
Dim objDic As Object
Dim strString As String
Dim lngZ As Long
Dim lngLast As Long

Set objDic = CreateObject("Scripting.Dictionary")
lngLast = Cells(Rows.Count, 3).End(xlUp).Row

For lngZ = lngLast To 11 Step -1
 strString = Cells(lngZ, 3).Value & Cells(lngZ, 4).Value & Cells(lngZ, 5).Value & Cells(lngZ, 6).Value & Cells(lngZ, 7).Value _
 & Cells(lngZ, 8).Value & Cells(lngZ, 9).Value & Cells(lngZ, 10).Value & Cells(lngZ, 11).Value & Cells(lngZ, 12).Value & Cells(lngZ, 13).Value _
 & Cells(lngZ, 14).Value & Cells(lngZ, 15).Value & Cells(lngZ, 16).Value & Cells(lngZ, 17).Value & Cells(lngZ, 18).Value & Cells(lngZ, 19).Value _
 & Cells(lngZ, 20).Value & Cells(lngZ, 21).Value & Cells(lngZ, 22).Value & Cells(lngZ, 23).Value & Cells(lngZ, 24).Value & Cells(lngZ, 25).Value
 
   If objDic.Exists(strString) = False Then
     objDic(strString) = 0
       Else
     'Cells(lngZ, 1).EntireRow.Delete
     Range(Cells(lngZ, 3), Cells(lngZ, 25)).Interior.ColorIndex = 3
   End If
Next
End Sub
Hallo Uwe,

ja stimmt - kuckst Du bitte unten.