Microsoft Excel

Herbers Excel/VBA-Archiv

Zeilen ausblenden wenn 2 Werte gleich

Betrifft: Zeilen ausblenden wenn 2 Werte gleich von: Seppl
Geschrieben am: 19.10.2020 11:28:42

Hallo community,

dies ist mein erster Beitrag, deswegen bitte ein Auge zudrücken wenn Beschreibung nicht so ist wie gewünscht.

Zu meinem Problem: Ich habe eine Tabelle mit 5 Spalten, bei der Zeilen ausgeblendet (nicht gelöscht) werden sollen, bei denen die Werte zweier Spalten (A und D) identisch sind, mit den Einträgen in anderen Zeilen.

Beispiel:

A B C D E
Berlin Hase Inge Nelke Mars
Berlin Wolf Klaus Nelke Erde
Köln Bär Heinz Rose Erde
Aachen Igel Heinz Tulpe Venus
Aachen Igel Kurt Nelke Mars
Aschen Bär Inge Nelke Erde
Wien Reh Bert Rose Pluto

Gewünschtes Ergebnis:

A B C D E
Berlin Hase Inge Nelke Mars
Köln Bär Heinz Rose Erde
Aachen Igel Heinz Tulpe Venus
Aachen Igel Kurt Nelke Mars
Wien Reh Bert Rose Pluto

Für die drei restlichen Felder können die „ersten Werte“ eingetragen werden die gefunden werden.
Habe es schon probiert mit:
ActiveSheet.Range("$A$1:$E$8").RemoveDuplicates Columns:=Array(1, 4), Header:=xlNo

Aber diese Zeilen werden dann wirklich gelöscht und können nicht wieder eingeblendet werden.
Kriege es nicht hin, aus dem „RemoveDuplicates“ eine Art „Ausblenden“-Befehl zu generieren.

Hoffe ein VBA-Experte von Euch kann mir da evtl. weiterhlefen. Danke schön vorab!

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Daniel
Geschrieben am: 19.10.2020 11:36:27

Hi

da brauchst du eine Hilfsspalte, in welcher du die Zeilen per Formel kennzeichnest und dann filterst.
wenn die Zeilen so wie in deinem Beispiel direkt untereinander stehen, dh nach Spalte A und D sortiert bzw zumindest gruppiert sind, dann reicht die Formel in Zeile 2: =A1&D1=A2&D2
und du filterst in dieser Zeile nach FALSCH.

Gruß Daniel

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Seppl
Geschrieben am: 19.10.2020 12:04:33

Hallo Daniel,

danke für die schnelle Antwort. Interessanter Ansatz, werde es heute noch ausprobieren.

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Seppl
Geschrieben am: 19.10.2020 14:46:17

Hallo Daniel,

funktioniert so wie von Dir beschrieben - danke! Habe gleichzeitig noch eine Lösungsalternative von Gerd zugeschickt bekommen. Die ist auch sehr geschickt (über Makro, ohne Zusatzspalte). Bin am Überlegen welche der beiden Alternativen ich einbauen werde.

Danke auf jeden Fall schonmal, super schnelle Hilfe von Euch beiden.

Grüße, Seppl

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Seppl
Geschrieben am: 19.10.2020 11:46:06

Hallo,
sorry habe gesehen, dass in den Tabellenbeispielen die Tabellen nicht so angezeigt werden wie gewünscht (tabellarisch untereinander). Hoffe Ihr könnt trotzdem damit etwas anfangen.

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Gerd L
Geschrieben am: 19.10.2020 12:01:35

Servus Seppl!
Sub Unit()

    Dim R As Range


    For Each R In Cells(1, 1).CurrentRegion.Rows
    
        R.Hidden = WorksheetFunction.CountIfs _
        (Range("A1:A" & R.Row), R.Cells(1, 1), _
         Range("D1:D" & R.Row), R.Cells(1, 4)) <> 1
    
    Next


End Sub

Gruß Gerd

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Seppl
Geschrieben am: 19.10.2020 12:10:57

Hallo Gert,

danke für die schnelle Antwort. Habe es mit Deinem Makro probiert, aber es tut sich nichts. Die For-Schleife wird auch nur einmal durchlaufen.

Grüße, Seppl

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Gerd L
Geschrieben am: 19.10.2020 12:19:32

Hallo Seppl,

wenn du keine idealtypsche Liste (ein Rechteck ab A1 vollständig gefüllt) hast,

kannst du mal dies probieren.
Sub Unit_2()

    Dim R As Range


    For Each R In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).EntireRow
    
        R.Hidden = WorksheetFunction.CountIfs _
        (Range("A1:A" & R.Row), R.Cells(1, 1), _
         Range("D1:D" & R.Row), R.Cells(1, 4)) <> 1
    
    Next


End Sub

Gruß Gerd

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Seppl
Geschrieben am: 19.10.2020 12:57:37

Hallo Gert,

super, jetzt funktioniert's - vielen Dank!
Habe um den Hidden-Befehl noch eine kleine If-Schleife eingebaut, dass Leerzeilen übersprungen werden, aber sieht wirklich sehr gut aus.

Danke und schöne Grüße, Seppl

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Seppl
Geschrieben am: 19.10.2020 14:32:03

Hallo Gerd,

wie ich bereits geschrieben habe funktioniert Dein Makro einwandfrei.

Eine Frage nur noch: Angenommen ich würde noch eine dritte Spalte (Spalte F) als Filterkriterium aufnehmen wollen. Wie müsste dann die R.Hidden-Anweisung lauten?

Würde mich freuen, von Dir zu hören.

Schöne Grüße und danke vorab, Seppl

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Gerd L
Geschrieben am: 20.10.2020 12:43:14

Hallo Seppl!
Sub Unit_3()

    Dim R As Range


    For Each R In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).EntireRow
    
        R.Hidden = WorksheetFunction.CountIfs _
        (Range("A1:A" & R.Row), R.Cells(1, 1), _
         Range("D1:D" & R.Row), R.Cells(1, 4), _
         Range("F1:F" & R.Row), R.Cells(1, 6)) <> 1
    
    Next


End Sub

Gruß Gerd

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Seppl
Geschrieben am: 21.10.2020 09:17:36

Hallo Gerd,

vielen Dank - jetzt läuft's auch mit drei Feldern! Ich möchte nicht undankbar erscheinen, aber eine Frage/Bitte hätte ich noch:

Ich habe festgestellt, dass wenn zuvor Zeilen über den "normalen" Autofilter ausgeblendet wurden, diese nach dem Durchlauf Deines Makros wieder eingeblendet werden. Wäre das ein großer Akt, Dein Makro nur auf die sichtbaren Zeilen anwenden zu lassen? So könnte ich zuvor den Autofilter anwenden und anschließend mit Deinem Makro die mehrfachen Zeilen ausblenden. Aktuell hebt praktisch der Autofilter Dein Makro auf, und umgekehrt genauso.

Wenn's aber ein zu großer Aufwand wäre, dann könnte ich das auch so lassen wie es ist. Aber Du weißt ja, man will es immer optimieren wo es geht.

Schöne Grüße und danke vorab, Seppl

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Daniel
Geschrieben am: 19.10.2020 15:09:13

Hi

wenns per Makro sein soll, vielleicht auch so:
Sub test()
Dim txt1 As String, txt2 As String
Dim rngAusblenden As Range
Dim Zelle As Range
Dim Bereich As Range
For Each Zelle In ActiveSheet.UsedRange.Columns(1).Cells
    txt1 = "|" & Zelle.Value & Zelle.Offset(0, 3).Value & "|"
    If InStr(txt2, txt1) = 0 Then
        txt2 = txt2 & txt1
    Else
        If Bereich Is Nothing Then
            Set Bereich = Zelle
        Else
            Set Bereich = Union(Bereich, Zelle)
        End If
    End If
Next
Bereich.EntireRow.Hidden = True
End Sub

könnte bei größeren Datenmengen etwas schneller sein als die Variante von Gerd.

Gruß Daniel

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Seppl
Geschrieben am: 20.10.2020 09:57:01

Hallo Daniel,

danke Dir für das Makro, werde es heute auch testen.
Eine Frage nur noch: Wenn zusätzlich noch die Spalte F berücksichtigt werden sollte, reicht es dann wenn ich die 6.te Befehlszeile wie folgt abändere:

txt1 = "|" & Zelle.Value & Zelle.Offset(0, 3).Value & Zelle.Offset(0,5).Value & "|"

Schöne Grüße und danke vorab, Seppl

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Daniel
Geschrieben am: 20.10.2020 12:41:48

Hi
ja, reicht aus
Gruß Daniel

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Seppl
Geschrieben am: 22.10.2020 12:03:14

Hallo Daniel,

eine Frage hätte ich noch zu Deinem Makro. Kannst Du mir sagen, ob bei Deiner Variante die Zeilen die vor der Anwendung Deines Makros über den "normalen" Autofilter ausgeblendet wurden, nach Anwendung des Makros wieder eingeblendet werden?
Das habe ich bei der Variante von Gerd festgestellt. Wünschenswert wäre es, wenn das Makro, die über den Autofilter ausgeblendeten Zeilen, nicht wieder einblendet. Ansonsten hebt praktisch das Makro den Autofilter auf - und umgekehrt.

Ich weiß, ist bisschen viel verlangt - aber vielleicht hast Du da auch eine Idee.

Schöne Grüße und vielen Dank vorab, Seppl

Betrifft: AW: Zeilen ausblenden wenn 2 Werte gleich
von: Seppl
Geschrieben am: 22.10.2020 11:53:04

Hallo Daniel,

eine Frage hätte ich noch zu Deinem Makro. Kannst Du mir sagen, ob bei Deiner Variante die Zeilen die vor der Anwendung Deines Makros über den "normalen" Autofilter ausgeblendet wurden, nach Anwendung des Makros wieder eingeblendet werden?
Das habe ich bei der Variante von Gerd festgestellt. Wünschenswert wäre es, wenn das Makro, die über den Autofilter ausgeblendeten Zeilen, nicht wieder einblendet. Ansonsten hebt praktisch das Makro den Autofilter auf - und umgekehrt.

Ich weiß, ist bisschen viel verlangt - aber vielleicht hast Du da auch eine Idee.

Schöne Grüße und vielen Dank vorab, Seppl

Beiträge aus dem Excel-Forum zum Thema "Zeilen ausblenden wenn 2 Werte gleich"