Anzeige
Archiv - Navigation
240to244
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
240to244
240to244
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ReDim + Länge des Datenfeldes

ReDim + Länge des Datenfeldes
03.04.2003 16:45:48
Rolf Wetzer
Hallo,
Ich möchte Daten von einem Datenfeld in ein anderes "umsortieren" und dabei Werte tilgen, wenn sie aufeinanderfolgend die selbe Ausprägung haben.

Die Werte stehen der Variablen OrgMatrix. Durch die Redim Anweisung erhält die Matrix die Form: Zeilen, Spalten, wobei die Zeilen von 1 bis 3973 laufen, und insgesammt 2 Spalten vorhanden sind.
In der Spalte 1 steht eine fortlaufende Zahl, also 1, 2, ... und in der Spalte 2 steht jeweils eine andere Zahl mit 2 Nachkommastellen.

Ich definiere nun eine zweite Matrix Namens "TilgMatrix", die zunächst die selbe Dimension wie die erste erhält.
Ich definiere einen Algorithmus, der die Werte in der zweiten Spalte (der Orginalmatrix) miteinander vergleicht, und falls diese ungleich sind, die Werte in die neue Matrix schreibt.

Von einem Test auf einem Excelsheet weiß ich, daß durch den Vorgang insgesamt 151 Zeilen "getilgt", d.h. nicht in die zweite Matrix geschrieben werden.

Der Algorithmus läuft sauber durch und anhand der Indices weiß ich, daß er auch die 151 Fälle findet.
Abschließend möchte ich nun mittels der ReDim Preserve - Anweisung die Größe der neuen Matrix neu festsetzen, da sie bislang der Größe der OrgMatrix entspricht. Die Neue Matrix soll auch 2 Dimensionen enthalten, aber die Zeilenanzahl soll nun von 1 bis "Lcounter" laufen, wobei LCounter im Test auch den richtigen Wert annimmt, nämlich (3973-151 = 3822). Zudem sollen natürlich die Daten erhalten bleiben.

Mit der ReDim Preserve Anweisung erhalte ich jedoch den Fehler "Index außerhalb des gültigen Bereichs)

Was muß ich ändern???

Hier Teile des Programms:

Option Base 1
Sub TUP()
Dim OrgMatrix() As Single
Dim TilgMatrix() As Single
Dim RowCount, LCounter, i, j As Integer
...
ReDim OrgMatrix(RowCount, 2) As Single
...

' zweite Matrix definieren und Zeile 1 füllen
ReDim TilgMatrix(RowCount, 2) As Single
TilgMatrix(1, 1) = OrgMatrix(1, 1)
TilgMatrix(1, 2) = OrgMatrix(1, 2)
LCounter = 1

' Werte sortieren und "tilgen"
For i = 2 To RowCount
If TilgMatrix(LCounter, 2) = OrgMatrix(i, 2) Then
' mache nichts
Else
LCounter = LCounter + 1
TilgMatrix(LCounter, 1) = OrgMatrix(i, 1)
TilgMatrix(LCounter, 2) = OrgMatrix(i, 2)
End If
Next

' Nun neue Matrix wird auf die durch "LCounter" gemessene Länge reduzieren
ReDim Preserve TilgMatrix(1 To LCounter, 2) As Single
' => hier entsteht der Fehler

End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: ReDim + Länge des Datenfeldes
03.04.2003 17:03:06
Erwin_E

Hallo,
Redim Preserve ist nur für die letzte Dimension möglich.

Gruß Erwin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige