Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1040to1044
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

Duplikate filtern ohne Matrix und AutoFilter

Duplikate filtern ohne Matrix und AutoFilter
23.01.2009 15:02:00
Sascha
Hallöchen Ihr Helfer in der Not ;)
Ich mal wieder...
gibt es eine andere Möglichkeit als Autofilter und Matrix um Duplikate an anderer Stelle des selben Tabellenblatts zu filtern?
Ich habe die Zeilen B1:B2496 mit doppelten einträgen drin und möchte in der Spalte J:J im selben Tabellenblatt jeden Eintrag einzeln untereinander stehen haben. Eine Mengenanzeige, wie oft welcher Begriff in der Liste vorkommt ist nicht notwendig.
Die Autofiler-Option ist unzureichend, da diese immer selbst aktualisiert werden muss und ich mir das sparen möchte, da die Liste mehrmals monatlich aktualisiert wird.
Eine Matrix-Formel ist für die Größe des Bereichs ebenfalls unzureichend, da diese ewig Zeit zum aktualisieren braucht.
Hat jemand eine Idee?
Nochmals danke und LG,
Sascha

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Duplikate filtern ohne Matrix und AutoFilter
23.01.2009 15:05:00
Ramses
Hallo
Excel gut ?
Daten - Filter - Spezialfilter
.... und dann dem Assistenten folgen
Gruss Rainer
AW: Duplikate filtern ohne Matrix und AutoFilter
23.01.2009 15:12:20
Sascha
Hallo Ramses,
der FIlter ist mir auch bekannt.
Aber aus irgendwelchen Gründen aktualisiert der mir nicht die Auflistung, obwohl deutlich zu erkennen ist, dass neue Daten hinzugekommen sind, die vorher der Filterung nicht entnommen wurden.
Gibt es eine alternative Lösung?
AW: Duplikate filtern ohne Matrix und AutoFilter
23.01.2009 15:40:00
Tino
Hallo,
eine Alternative wäre mit VBA.
kommt als Code in die Tabelle
Option Explicit 
 
Private Sub Worksheet_Change(ByVal Target As Range) 
Dim Bereich As Range, LCount As Long 
 
With Application 
 .EnableEvents = False 
 .ScreenUpdating = False 
    
    For LCount = 1 To Target.Count 
        If Target(LCount).Column = 2 Then 
            'Spalte J leeren 
            Columns(10).Value = "" 
             
            'Benutzen Bereich ermitteln 
            Set Bereich = Range("B1:B" & Cells(Rows.Count, 2).End(xlUp).Row) 
             
            'Bereich nach J Filtern ohne Duplikate 
            'Achtung die 1. Zelle wird als Überschrift mitgenommen 
            Bereich.AdvancedFilter xlFilterCopy, , Range("J1"), True 
             
            Range("J1") = "gefiltert" 'neue Überschrift 
            Range("J1").Font.Bold = True 
            Exit For 
        End If 
    Next LCount 
  
 .EnableEvents = True 
 .ScreenUpdating = True 
End With 
 
End Sub 
 


Gruß Tino

Anzeige
AW: Duplikate filtern ohne Matrix und AutoFilter
23.01.2009 16:38:00
Sascha
Hallo Tino,
danke für den Code.
Habe eben gerade den VBA mal eingetragen, allerdings festgestellt, dass nichts funktioniert :(
Kann das damit zusammen hängen, dass ich Ihn falsch eingetragen habe, oder er sich mit dem anderen VBA-Code auf dem gleichen Tabellenblatt beißt?
Hier einmal der bereits eingetragene Code, der auch bleiben MUSS:

Private Sub Worksheet_Activate()
'Zielblatt muss immer die höchste Nr. haben!
Dim i As Long
Dim j As Long
On Error GoTo Fehler
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
ActiveSheet.Columns("B").ClearContents
ActiveSheet.Columns("C").ClearContents
ActiveSheet.Columns("D").ClearContents
ActiveSheet.Columns("E").ClearContents
ActiveSheet.Columns("F").ClearContents
ActiveSheet.Columns("G").ClearContents
ActiveSheet.Columns("H").ClearContents
With ActiveSheet
For i = 1 To ActiveWorkbook.Sheets.Count - 1 Step 1
Sheets(i).Range("C122:C218").Copy
.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("N122:N218").Copy
.Cells(Rows.Count, "C").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("L122:L218").Copy
.Cells(Rows.Count, "D").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("I122:I218").Copy
.Cells(Rows.Count, "E").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("J122:J218").Copy
.Cells(Rows.Count, "F").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("G4:G100").Copy
.Cells(Rows.Count, "G").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("D122:D218").Copy
.Cells(Rows.Count, "H").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Next i
End With
Fehler:
Application.CutCopyMode = False
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
ActiveSheet.Range("A1").Select
End Sub


Wäre schön, wenn du mir weiterhin helfen könntes.
LG
Sascha

Anzeige
AW: Duplikate filtern ohne Matrix und AutoFilter
23.01.2009 16:50:00
Tino
Hallo,
habe Deinen Code jetzt nicht getestet,
ich denke dass Filtern soll nach dem Kopiervorgang ausgeführt werden.
kommt als Code in die Tabelle
Option Explicit 
 
Private Sub Worksheet_Activate() 
    'Zielblatt muss immer die höchste Nr. haben! 
    Dim i As Long 
    Dim j As Long 
     
    On Error GoTo Fehler 
    Application.EnableEvents = False 
    Application.ScreenUpdating = False 
    Application.Calculation = xlCalculationManual 
    ActiveSheet.Columns("B").ClearContents 
    ActiveSheet.Columns("C").ClearContents 
    ActiveSheet.Columns("D").ClearContents 
    ActiveSheet.Columns("E").ClearContents 
    ActiveSheet.Columns("F").ClearContents 
    ActiveSheet.Columns("G").ClearContents 
    ActiveSheet.Columns("H").ClearContents 
     
    With ActiveSheet 
    For i = 1 To ActiveWorkbook.Sheets.Count - 1 Step 1 
        Sheets(i).Range("C122:C218").Copy 
        .Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 
        Sheets(i).Range("N122:N218").Copy 
        .Cells(Rows.Count, "C").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 
        Sheets(i).Range("L122:L218").Copy 
        .Cells(Rows.Count, "D").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 
        Sheets(i).Range("I122:I218").Copy 
        .Cells(Rows.Count, "E").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 
        Sheets(i).Range("J122:J218").Copy 
        .Cells(Rows.Count, "F").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 
        Sheets(i).Range("G4:G100").Copy 
        .Cells(Rows.Count, "G").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 
        Sheets(i).Range("D122:D218").Copy 
        .Cells(Rows.Count, "H").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 
    Next i 
     
    End With 
     
    Call Filtern 'Makro Filtern aufrufen 
Fehler: 
    Application.CutCopyMode = False 
    Application.EnableEvents = True 
    Application.Calculation = xlCalculationAutomatic 
    Application.ScreenUpdating = True 
     
    ActiveSheet.Range("A1").Select 
End Sub 
 
 

kommt in ein Modul

Option Explicit 
 
Sub Filtern() 
Dim Bereich As Range 
     
    'Spalte J leeren 
    Columns(10).Value = "" 
      
    'Benutzen Bereich ermitteln 
    Set Bereich = Range("B1:B" & Cells(Rows.Count, 2).End(xlUp).Row) 
      
    'Bereich nach J Filtern ohne Duplikate 
    'Achtung die 1. Zelle wird als Überschrift mitgenommen 
    Bereich.AdvancedFilter xlFilterCopy, , Range("J1"), True 
      
    Range("J1") = "gefiltert" 'neue Überschrift 
    Range("J1").Font.Bold = True 
 
End Sub 


Gruß Tino

Anzeige
Funzt bestens :) Vielen Vielen Dank o.w.T.
23.01.2009 16:55:00
Sascha
Sicher?
23.01.2009 17:02:00
Tino
Hallo,
habe mal über Deinen Code drüber gesehen, mir fällt auf dass Du die Spalte B komplett leer machst.
Du benötigst eine Überschrift in B1, sonst funktioniert der Filter nicht.
Gruß Tino
AW: Sicher?
23.01.2009 17:20:48
Sascha
Hallo Tino,
das hatte ich auch beim Autofilter.
Muss halt kurz eine Null reinschreiben, damit er mir alles kopiert.
Die Überschrift an sich ist mir egal.
Aber wenn ich Ihm Sage, dass er im alten VBA B2:B löschen soll anstatt B müsste das doch auch vorbei sein, oder?
LG
Sascha
vielleicht so
23.01.2009 17:53:00
Tino
Hallo,
so müsste die Überschrift bleiben.
Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row).ClearContents
Gruß Tino
Anzeige
AW: vielleicht so
23.01.2009 18:03:51
Sascha
Ich werds mal eingeben und bei der nächsten aktualisierung der Liste sehen, was pasiert.
Danke dir für die Hilfe :)
LG
Sascha
AW: Duplikate filtern ohne Matrix und AutoFilter
23.01.2009 15:57:34
Luschi
Hallo Sascha,
vielleicht ist das ein guter Einstieg, mal sich mit makros zu beschäftigen:

Sub jederWertNurEinmal()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
'1. Zelle markieren
ActiveSheet.Range("A1").Select
'alles bis letzte Zelle in der selben Spalte markieren
ActiveSheet.Range(Selection, Selection.End(xlDown)).Select
'Spezialfilter aktivieren
'F1 ist die die 1. Zelle, wohin die daten geschrieben werden
'Unique:=True - jeder Wert wird nur einmal erfaßt
Selection.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ActiveSheet.Range("F1"), Unique: _
=True
'Markierung wieder entfernen
ActiveSheet.Range("A1").Select
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub


Wie man dann noch einen Start-Button auf das Tabellenblatt zaubert und das obere Makro einbindet, kannst Du auch hier im Forum erfragen.
Gruß von Luschi
aus klein-Paris

Anzeige

26 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige