Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1496to1500
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 im mehrdimensionalen Array entfernen

Duplikate im mehrdimensionalen Array entfernen
14.06.2016 11:36:18
Oliver

Hallo,
ist es möglich, Duplikate in einem mehrdimensionalen Array zu entfernen? Ich möchte dabei nur den ersten Index betrachten.
Dim arr(2, 1) As Variant
arr(0, 0) = 1
arr(0, 1) = "var1"
arr(1, 0) = 2
arr(1, 1) = "var2"
arr(2, 0) = 1
arr(2, 1) = "var3"
In dem Fall sollte der Arrayeintrag (2,0) und (2,1) entfernt werden.
Ich weiß, dass ich das Array in eine Tabelle schreiben kann und im Anschluss daran alle Duplikate entfernen kann. Diese Variante dauert aber recht lange und ich such nach einer schnelleren Methode.
Ich möchte die Duplikate direkt im Array entfernen.
Vielen Dank und Grüße
Oliver

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Duplikate im mehrdimensionalen Array entfernen
14.06.2016 12:55:55
Daniel
Hi
was soll genau passieren?
sollen die Duplikate nur "geleert" werden und alle anderen Einträge behalten ihre Position?
oder sollen die anderen Einträge dann nachruschten, so dass die Leerstellen aufgefüllt werden?
also äquivalent den Zelloperationen:
- "Inhalte leeren"
- "Zellen löschen + nach links/oben verschieben"
btw in deinem Beispiel ist arr(2, 1) kein Duplikat,"var3" kommt hier das erste mal vor.
wenn die Duplikatfelder nur geleert werden sollen mit Hilfe des Dictionary-Objektes so:

Sub test()
Dim arr(2, 1) As Variant
Dim D As Object
Dim z As Long, s As Long
arr(0, 0) = 1
arr(0, 1) = "var1"
arr(1, 0) = 2
arr(1, 1) = "var2"
arr(2, 0) = 1
arr(2, 1) = "var3"
Set D = CreateObject("Scripting.dictionary")
For z = LBound(arr, 1) To UBound(arr, 1)
For s = LBound(arr, 2) To UBound(arr, 2)
If D.exists(arr(z, s)) Then
arr(z, s) = ""
Else
D(arr(z, s)) = 1
End If
Next s
Next z
End Sub
Gruß Daniel

Anzeige
AW: Duplikate im mehrdimensionalen Array entfernen
14.06.2016 13:05:15
Rudi Maintaire
Hallo,
Sub aa()
Dim arr() As Variant
Dim i As Long, objArr As Object, oArr
Set objArr = CreateObject("scripting.dictionary")
ReDim arr(2, 1)
arr(0, 0) = 1
arr(0, 1) = "var1"
arr(1, 0) = 2
arr(1, 1) = "var2"
arr(2, 0) = 1
arr(2, 1) = "var3"
For i = LBound(arr) To UBound(arr)
If Not objArr.exists(arr(i, 0)) Then
objArr(arr(i, 0)) = arr(i, 1)
End If
Next i
i = -1
ReDim arr(objArr.Count - 1, 1)
For Each oArr In objArr
i = i + 1
arr(i, 0) = oArr
arr(i, 1) = objArr(oArr)
Next
End Sub

AW: Duplikate im mehrdimensionalen Array entfernen
16.06.2016 16:30:31
Oliver
Danke! genau das habe ich gesucht. vielen Dank euch Beiden.

Anzeige

118 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige