Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
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
Inhaltsverzeichnis

Excel VBA - Duplikate ausblenden statt löschen

Excel VBA - Duplikate ausblenden statt löschen
27.03.2024 10:19:49
Lukas
Liebes Forum,

ich habe eine Tabelle ohne Kopfzeile, mit einer statischen Anzahl an Spalten (A bis H) und variabler Anzahl an Zeilen (Erste Zeile: 13 bis X). Nun möchte ich die entsprechende variable Range nach Duplikaten durchsuchen und die ganze Zeile des Duplikats nicht weiter anzeigen lassen. Als Duplikate sollen nur solche Zeileneinträge angesehen werden, deren Werte in den Spalten 1, 6, 7 und 8 mit einem zuvor gelisteten Eintrag übereinstimmen. Mit dem folgenden Code werden bereits alle richtigen Zeileineinträge erkannt und gelöscht:

ActiveSheet.Range("A13:H" & X).RemoveDuplicates Columns:=Array(1, 6, 7, 8), Header:=xlNo


Meine Frage hierzu lautet: Gibt es eine Möglichkeit diese Zeileneinträge nicht zu löschen, sondern nur auszublenden - und das ohne Schleife?

Viele Grüße

Lukas

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA - Duplikate ausblenden statt löschen
27.03.2024 10:24:57
{Boris}
Hi,

ich würde in einer Hilfsspalte per Formel die Duplikate ermitteln. Wenn Du als Rückgabewert nur WAHR (Duplikat) oder FALSCH (kein Duplikat) ausgeben lässt, dann kannst Du die Tabelle am Ende nach FALSCH filtern.

VG, Boris
AW: Excel VBA - Duplikate ausblenden statt löschen
27.03.2024 11:03:42
Lukas
Danke dir für den Vorschlag! Gibt es vielleicht eine alternative Methode zu RemoveDuplicates, mit der ich alle Duplikate auswählen kann?
AW: Excel VBA - Duplikate ausblenden statt löschen
27.03.2024 10:46:52
daniel
Hi
ausblenden ohne Schleife geht nur wie Boris schon geschrieben hat, über die Kennzeichnung der Duplikate in einer Hilfsspalte, über die du diese dann ausblenden kannst.

die entscheidende Frage wäre: ist die Liste sortiert, dh stehen alle Duplikate direkt untereinander oder können die auch verteilt sein?

für unsortierte Daten wäre das eine möglichkeit:
dim Ausblenden as range

With Range("I13:I" & x)
.FormulaR1C1 = "=IF(CountIFs(R13C1:RC1,RC1,R13C6:RC6,RC6,R13C7:RC7,RC7,R13C8:RC8,RC8)=1,"""",1)"
.Formula = .Value
if Worksheetfunction.sum(.cells) > 0 then
set Ausblenden = .SpecialCells(xlcelltypeconstants, 1)
.ClearContents
.EntireRow.Hidden = true
end if
end with


Gruß Daniel

Gruß Daniel
Anzeige
AW: Excel VBA - Duplikate ausblenden statt löschen
27.03.2024 11:03:25
GerdL
Hallo Lukas,

noch ein Gedicht mit Schleife ohne Formel.
Sub Unit()


Dim z As Long



For z = 14 To Range("A13:H" & Rows.Count).SpecialCells(xlCellTypeLastCell).Row
If Application.CountIfs(Range("A13:A" & z - 1), Cells(z, "A"), _
Range("F13:F" & z - 1), Cells(z, "F"), _
Range("G13:G" & z - 1), Cells(z, "G"), _
Range("H13:H" & z - 1), Cells(z, "H")) Then
Rows(z).RowHeight = 0
End If
Next


End Sub



Gruß Gerd
Anzeige
AW: Excel VBA - Duplikate ausblenden statt löschen
28.03.2024 07:52:45
Lukas
Ich habe das Problem nun komplett anders gelöst, jedoch auch nur mit einer Schleife. Die Idee war, den Zellinhalt in Anhänigkeit jeder Zeile und jeder Spalte, die zur Dupikatsprüfung mit einbezogen werden sollen in einen Array aufzunehmen. Anschließend soll der Array nach dem zuletzt zugefügten Wert durchsucht werden und wenn dieser häufiger als ein mal auftaucht, soll seine Zeile ausgeblendet werden. Zusätzlich habe ich einen "." zu Beginn und am Ende jedes Eintrags eingefügt, sodass keine "falschen" Duplikate ausgeblendet werden.

Der funktionierende Code dazu sieht so aus:
Dim Abgleich, Vergleich() As Variant


For i = 13 To X
Vergleich(i) = "." & ActiveSheet.Cells(i, 1) & "-" & _
ActiveSheet.Cells(i, 6) & "-" & _
ActiveSheet.Cells(i, 7) & "-" & _
ActiveSheet.Cells(i, 8) & "."
Abgleich = Filter(Vergleich, Vergleich(i), , vbTextCompare)
If UBound(Abgleich) - LBound(Abgleich) + 1 > 1 Then
ActiveSheet.Rows(i).EntireRow.Hidden = True
End If
Next
Anzeige
AW: Excel VBA - Duplikate ausblenden statt löschen
27.03.2024 11:24:57
Lukas
Vielen Dank für den Vorschlag. Leider macht der Code nicht das was er soll :S
AW: Excel VBA - Duplikate ausblenden statt löschen
27.03.2024 12:17:05
Lukas
Und ich habe herausgefunden wieso es nicht funktioniert! In einer Spalte stehen Kürzel, z.B. KW und HKW. Offenbar wertet Excel für KW auch HKW als Übereinstimmung (umgekehrt natürlich nicht). Etwas äquivalentes zu LookAt:=xlWhole gibt es für .Countifs nicht, oder?
AW: Excel VBA - Duplikate ausblenden statt löschen
27.03.2024 13:19:18
daniel
Hi
countIfs ist eigentlich immer LookAt:=xlwhole
für ein xlpart muss man den Suchbegriff mit Jokerzeichen erweitern.
"KW" als Suchbegriff sollte "HKW" nicht mitzählen, "*KW*" hingegen schon.
Gruß Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige