Vba gleiche Werte in arrays löschen
Hallo Leute
Ich bin auf der Suche nach einer Möglichkeit, gleiche Einträge in einer Array zu löschen. Zum bespiel Array(0)=10 Array(1)= 20 Array(2)= 10 Array(3)= 40 Array(4)= 10
Wie lösche ich nun die gleichen Einträge aus der Array. Bzw. Noch besser wäre es, wenn ich sie in eine andere Array schreiben kann.
Vielen Dank Peter
4 Antworten
Du kannst dir mit einem Hilfsbereich in Excel das Leben sehr einfach machen. Excel kann aus Bereichen einfach Duplikate löschen:
Sub test()
Dim arr
Dim i
Dim rHelp As Range
arr = Array(2, 3, 2, 4, 7, 4)
For i = LBound(arr) To UBound(arr)
Cells(i + 1, 1).Value = arr(i)
Next
Set rHelp = Range(Cells(1, 1), Cells(i, 1))
rHelp.RemoveDuplicates 1
For i = LBound(arr) To UBound(arr)
arr(i) = Cells(i + 1, 1).Value
Next
End Sub
Ja, es werden auch mehrere Duplikate gelöscht.
Die Duplikate kriegst du auf diesem Weg nicht so einfach heraus.
Probiere es einfach mal identifiziert.
halt die konkreten Werte Deines Arrays ausgelesen, damit kannst du dann rumspielen, sortieren oder mit Formeln was rauslesen.
Das Array selbst ist recht unhandlich, weil man da jedes einzelne item auslesen muss, das dauert mit VBA und ist unschön zu formulieren.
Obiges Makro liest die formeln in eine Spalte aus und dann gehts eben mit Tabellenblatt-Formeln weiter, am Schluss evtl wieder die gesäuberten Folgen einlesen!
Ich habe meinen Beitrag schlecht überarbeitet. "identifiziert" sollte das letzte Wort der zweiten Zeile werden. Das letzte Wort der dritten Zeile sollte "aus" bleiben.
Vielen Dank für die vielen Lösungsvorschläge.
Doppelte Einträge sind kein Problem, jedoch habe ich oftmals 10-400 x den gleichen Eintrag in der Array. Die müssen raus und in eine andere Array.
Vielleicht verstehe ich es nur falsch und die Lösung wird hier schon angeführt.
Würde euch noch einmal um Hilfe bitte
Bei Java gibt es eine Möglichkeit zu zählen, wie oft eine Variable in einem Array ist. Dann einfach neues Array und prüfen ob dieses Objekt da drin ist.
Ja und ich habe einen Verweis auf Java gemacht. Meistens gibt es ja die selben Funktionen- heißwn nur anders.
gibt mehrer wege ,
sortieren und dann einfach durchs array gehen und folgende gleiche werte übergehen .
Dim inAnimals(2) As String
Dim outAnimals(2) As String
Dim nexti As Integer
Dim dies as Integer
nexti = 0;
inAnimals(0) = "lion"
inAnimals(1) = "turtle"
inAnimals(2) = "ostrich"
Array.Sort(inAnimals)
FOR dies = 1 TO 2
IF inAnimals(dies-1) <> inAnimals(dies)
THEN outAnimals(nexti) = inAnimals(dies)
++nexti
ENDIF
NEXT dies
Array.Sort findet mein Excel (2010) nicht. Ist das neu hinzugekommen?
Sonst gibt es dazu genügend Lösungen im Netz. Bsp: http://www.vba-wordwelt.de/programmiertechniken-mit-vba/programmstrukturen/datenfelder-array/code-beispiele_arrays/aarray-sortieren.html
Gilt das nur für 1 Duplikat sprich Doppelten eintrag öde für mehrere Duplikate. Z.b.: 10x Nummer 1 im Array
Kann ich die Duplikate auchbin ein anderes Array schreiben oder nur löschen??
Vielen dank