Vba gleiche Werte in arrays löschen

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

Woher ich das weiß:Berufserfahrung – Programmierer
jumbo125 
Fragesteller
 16.04.2015, 17:23

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

0
Suboptimierer  16.04.2015, 17:31
@jumbo125

Ja, es werden auch mehrere Duplikate gelöscht.

Die Duplikate kriegst du auf diesem Weg nicht so einfach heraus.

Probiere es einfach mal identifiziert.

0
Iamiam  16.04.2015, 23:12
@jumbo125

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!

0
Suboptimierer  17.04.2015, 10:49
@jumbo125

Ich habe meinen Beitrag schlecht überarbeitet. "identifiziert" sollte das letzte Wort der zweiten Zeile werden. Das letzte Wort der dritten Zeile sollte "aus" bleiben.

0

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.

TUrabbIT  16.04.2015, 13:36

Es geht hier um VBA, das hast du schon gelesen?

1
Cromewell  19.04.2015, 21:06

Ja und ich habe einen Verweis auf Java gemacht. Meistens gibt es ja die selben Funktionen- heißwn nur anders.

0

gibt mehrer wege ,

sortieren und dann einfach durchs array gehen und folgende gleiche werte  übergehen .

RakonDark  16.04.2015, 14:03
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
1
RakonDark  16.04.2015, 14:10
@RakonDark

und vor der FOR schleifen

outAnimals(0) = inAnimals(0)

nexti = 1

0