Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Liste Ohne Duplikate mit verschmolzenen Kriterien

Liste Ohne Duplikate mit verschmolzenen Kriterien
26.05.2008 10:43:00
Andreas
Hallo Herber Fans,
ich arbeite an einer Methode, über VBA eine Liste ohne Duplikate zu erzeugen, die auf Grundlage von zwei Kriterien erfolgt, die für die Ausgrenzung der Duplikate über „&“ oder „Union“ verschmolzen werden sollen. Die Liste ohne Duplikate soll dann jedoch wieder mit separaten Werten erstellt werden. Ich habe zwei mögliche Ansätze identifiziert und so weit wie möglich realisiert. Aber es haut noch nicht hin.
Ausgangsbasis sind im Tabellenblatt „Filterwerte“ die beiden in getrennten Spalten stehenden Parameter. Diese sollen zeilenweise verschmolzen werden, und dann ohne Duplikate, aber doch wieder getrennt auf ein anderes Blatt kopiert werden.
Ich wollte mit dem Advanced Filter und der Union eines Ranges arbeiten, aber das hat nicht geklappt. Er kopiert zwar einen Wert ohne Duplikate, aber nur unter Berücksichtigung der Werte in Spalte A und leider noch mit 0 Werten.
Der zweite Ansatz über eine Schleife verschmilzt die jeweils beiden Kriterien zeilenweise, aber das CountIf mit einer Union(Range(„test“),Range(„Test2“) habe ich nicht realisieren können.
Ich habe schon alle möglichen Hilfequellen abgegrast, jedoch keinen Ansatz gefunden, der mir bei der Problemlösung helfen konnte.
https://www.herber.de/bbs/user/52623.xls
Geht dies überhaupt? Wie muß die Logik aussehen, um es über den (bei großen Bereichen schnelleren) Advanced Filter zu realisieren?
Vielen Dank für Eure Hinweise und Anregungen.
Grüße, Andreas Hanisch

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Liste Ohne Duplikate mit verschmolzenen Kriterien
26.05.2008 11:50:00
Mac4
Hallo Andreas,
ich habe leider, aufgrund von IT-Restriktionen, nicht die Möglichkeit, mir Deine datei anzusehen.
Bei nachfolgendem Makro werden die Inhalte ohne Dublikate der Spalten A und B mit einem Komma getrennt in ein Array eingelesen und anschließend in die Spalte D ausgelesen - der Inhalt der Spalte D wird anschließend über text in Spalten auf die Spalten D:E nach Komma getrennt.
Vielleicht kannst Du es ja anpassen.

Sub Arr()
Dim i
Dim Arr()
Dim Position As Variant
Dim Zl As Long
Zl = 1
ReDim Arr(0)
For i = 1 To [A65536].End(xlUp).Row
Position = Application.Match(Cells(i, "A") & "," & Cells(i, "B"), Arr, 0)
If IsError(Position) Then
ReDim Preserve Arr(0 To Zl)
Arr(Zl - 1) = Cells(i, "A") & "," & Cells(i, "B")
Zl = Zl + 1
End If
Next
With Range("D1:D" & UBound(Arr))
.Value = Application.Transpose(Arr())
.TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
End With
End Sub


Marc

Anzeige
AW: Liste Ohne Duplikate mit verschmolzenen Kriterien
26.05.2008 12:39:00
Andreas
Hallo Marc,
vielen Dank für Deine Antwort. Es hat funktioniert!!! Werde nun noch das Ganze versuchen auf Range("TEST") - Adressierung umzustellen, um mit Namensdefinitionen aus Excel arbeiten zu können.
Aber eine Frage bleibt noch:
Wie kann ich Nullwerte überspringen?
Ich hatte die Zeile: "If IsError(Position) Then" erweitert auf: "If IsError(Position) And Position 0 Then" . Dort jedoch eine Typenunverträglichkeit bekommen. Position kann ich aber nicht auf Long setzen, dann dann haut die andere Kondition ja nicht hin.
Hast Du eine Idee?
Dank und Gruß, Andreas

Anzeige
AW: Liste Ohne Duplikate mit verschmolzenen Kriterien
26.05.2008 13:24:00
Mac4
Hallo Andreas,
hilft das?

Sub Arr()
Dim i
Dim Arr()
Dim Position As Variant
Dim Zl As Long
Zl = 1
ReDim Arr(0)
For i = 1 To [A65536].End(xlUp).Row
If Cells(i, "A")  0 Then
Position = Application.Match(Cells(i, "A") & "," & Cells(i, "B"), Arr, 0)
If IsError(Position) Then
ReDim Preserve Arr(0 To Zl)
Arr(Zl - 1) = Cells(i, "A") & "," & Cells(i, "B")
Zl = Zl + 1
End If
End If
Next
With Range("D1:D" & UBound(Arr))
.Value = Application.Transpose(Arr())
.TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
End With
End Sub


Marc

Anzeige
AW: Liste Ohne Duplikate mit verschmolzenen Kriterien
26.05.2008 14:35:00
Andreas
Hallo Marc,
das gute liegt so nah… Danke, das hat funktioniert. Es hat sich aber leider noch ein Problem aufgetan. Ich möchte die Auflistung der gefilterten Daten erst in Zeile 2 beginnen lassen. Also habe ich jeweils in „Range("D1“ eine 2 eingesetzt. Nun startet die Auflistung auch bei D2. Aber sie schneidet den letzten zu filternden Wert (Test_166) ab. Wenn sie bei D1 startet listet sie korrekterweise Test_159 – Test_166 auf. Bei D2 aber nur bis Test_165.
Ich habe schon an allen möglichen Parametern die meines Erachtens nach dafür verantwortlich sein könnten. Zugegeben es ist die erste Array Formel in dieser Komplexität, die ich sehe und ich kann mir noch keinen Reim darauf machen, was ich ändern muß, damit die Aufzählung in D2 startet und komplett durchläuft.
Wenn Du mir hier noch einen Tip geben könntest, wäre es perfekt. Dann würde ich die Formel auch besser verstehen können.
Auf alle Fälle schon einmal vielen Dank für Deine Unterstützung bis hier!!!
Grüße, Andreas

Anzeige
AW: Liste Ohne Duplikate mit verschmolzenen Kriterien
26.05.2008 15:05:00
Mac4
Hallo Andreas,
dann musst Du folgende Zeile nutzen:
With Range("D2:D" & UBound(Arr) + 1)
Das +1 ist notwendig, da UBound (Arr) die Zahl der Elemente des Arrays wiedergibt - somit muss, wenn die Liste nicht in Zeile 1 beginnt, die Rangeangabe entsprechend erweitert werden!
Marc

AW: Liste Ohne Duplikate mit verschmolzenen Kriterien
26.05.2008 15:28:58
Andreas
Hallo Marc,
da wäre ich nicht drauf gekommen... Vielen Dank für den Hinweis. Habe es gerade geändert und es funktioniert perfekt!
Vielen Dank für Deine Hilfe und noch einen schönen Tag!
Grüße, Andreas

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige