Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
356to360
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
356to360
356to360
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datenfelder in neues Array klappt nicht

Datenfelder in neues Array klappt nicht
03.01.2004 14:10:24
Lupus
Hallo Excel-User,

In einem zweidimensionalem Array_1 möchte ich mittels unten aufgeführten Codes alle Doppelten entfernen:

Dazu vergleiche ich die Werte in Spalte 3 des Arrays und schreibe(zumindest will ich es, aber es klappt nicht) die Daten in ein neues Array.

Option Explicit
Option Base 1


Sub test()
Dim varArray_1 As Variant
With Worksheets(1)
varArray_1 = .Range(.Cells(2, 1), .Cells(.Cells(65536, 1).End(xlUp).row, 3))
End With
varArray_1 = DeleteDoubles(varArray_1)
Worksheets(1).Range("G1:I24") = varArray_1
End Sub



Function DeleteDoubles(arr As Variant)
Dim iCounter As Integer, intSpalte As Integer, lngZaehler As Long
Dim arrWithoutDouble(100, 3) As Variant
For iCounter = 1 To UBound(arr)
On Error Resume Next
If arr(iCounter, 3) <> arr(iCounter + 1, 3) Then
lngZaehler = lngZaehler + 1
For intSpalte = 1 To 3
arrWithoutDouble(lngZaehler, intSpalte) = arr(iCounter, intSpalte)
‘arrWithoutDouble(lngZaehler, intSpalte) ist immer leer
Next
End If
Next
arr = arrWithoutDouble
End Function


1. Wer kann mir sagen, wie der Code richtig lauten muß?

2. Die Dimensionierung von arrWithoutDouble habe ich jetzt willkürlich vorgenommen. Wie macht man dies aber richtig? Zu Beginn weis ich ja nicht wie viele Fundstellen ich habe und kann daher keine Dimensionierung angeben.

3. Kann man ein Array-Datensatz (Zeile) direkt in ein neues Array schreiben, oder muß man, wie oben beschrieben, die Zeile Feld für Feld (Spalte für Spalte) füllen?

Gruß Lupus

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

Betreff
Datum
Anwender
Anzeige
AW: Datenfelder in neues Array klappt nicht
03.01.2004 14:58:39
K.Rola
Hallo,

wird nicht so ganz klar, was du mit dem Ergebnis anfangen willst.
Wenns nur darum geht, Doppler zu entfernen, wäre der Spezialfilter
die einfachere Wahl.

Gruß K.Rola
AW: Datenfelder in neues Array klappt nicht
04.01.2004 14:17:07
Lupus
Hallo K.Rola

bei der Excel-Datei handelt es sich nur um ein einfaches Beispiel zum Nachvollziehen des Problems und des Codes. Spezialfilter kann ich nicht anwenden, da die Ursprungsdaten nicht in einer Tabelle stehen.

Über ein Userform-Makro werden Daten in ein zweidimensionales Array (50.000, 25) eingelesen und sortiert. Anschließend sollen die doppelten Datensätze entfernt und dann noch mal weiterverarbeitet werden.

Bei so großen Datenmengen ist es einfacher und schneller mit Arrays zu arbeiten um dann das Ergebnis in einer Excel-Tabelle darzustellen.

Wie man das mit einem Spezialfiltermacht ist mir ja klar, aber meine Fragen bezogen sich halt auf Arrays.

Dennoch danke für Deine Antwort.

Gruß Lupus
Anzeige
AW: Datenfelder in neues Array klappt nicht
04.01.2004 15:34:00
K.Rola
Hallo,

ich bezweifele, dass das bei deratigen Dimensionen mit Arrays schneller
geht. Zumal du nur die letzte Dimension eines Array redimsionieren kannst,
wenn die Daten erhalten bleiben sollen. Du müsstest also in mehreren
Schritten ein Array ins andere schaufeln.

Gruß K.Rola
AW: Datenfelder in neues Array noch offen
04.01.2004 16:09:13
Lupus
Hallo K.Rola,

es geht bedeutend schneller!!!

Schau Dir mal z. B. die "Array"-Quicksort-Methode an, die mir Nepumuk vor ca. 2 Wochen geschickt hat (mußt mal im Archiv stöbern, da waren es ca 65.000 Datensätze).

Unabhängig davon, kannst Du oder jemand anderes mir meine beiden letzten Fragen beantworten?

2. Die Dimensionierung von arrWithoutDouble habe ich jetzt willkürlich vorgenommen. Wie macht man dies aber richtig? Zu Beginn weis ich ja nicht wie viele Fundstellen ich habe und kann daher keine Dimensionierung angeben.

3. Kann man ein Array-Datensatz (Zeile) direkt in ein neues Array schreiben, oder muß man die Zeile Feld für Feld (Spalte für Spalte) füllen?

Gruß Lupus
Anzeige
AW: Datenfelder in neues Array noch offen
04.01.2004 18:05:26
K.Rola
Hallo,

tut mir Leid, ich möchte das nicht weiter vertiefen.

Gruß K.Rola

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige