Betrifft: Variant Array verkleinern
von: Axel
Geschrieben am: 20.01.2010 10:34:22
Hallo,
ich habe folgendes Problem: ich verwende in einem, relativ aufwendigen Skript mehrere Arrays, welche ich als Variant deklarieren musste. Nun muss ich aus einem Daten aussortieren.
Dies mache ich über eine Schleife welche den aktuellen Wert mit dem Nachfolger überschreibt. Allerdings verkürzt sich dadurch der Array.
'Fehlerhafte Werte aussortieren
For i = 1 To AnzahlZeilen
If Ergebnisarray(i + Zaehler, 1) = 99999 Then
Do While Ergebnisarray(i + Zaehler, 1) = 99999
Zaehler = Zaehler + 1
Loop 'Häufigkeit der 99999 in Folge
End If 'Finden der 99999
If i + Zaehler < AnzahlZeilen Then
Ergebnisarray(i, 1) = Ergebnisarray(i + Zaehler, 1)
For j = 1 To 7
Versuchsplan(i, j) = Versuchsplan(i + Zaehler, j)
Next
Else
ReDim Preserve Ergebnisarray(1 To (AnzahlZeilen - Zaehler), 1 To 1) 'Anpassen der Arraygröße
ReDim Preserve Versuchsplan(1 To (AnzahlZeilen - Zaehler), 1 To AnzahlSpalten)
i = AnzahlZeilen
End If 'Array Ende abschneiden, da leer
Next i 'Anzahl Versuche
Die ReDim Preserve Anweisung funktioniert hier leider nicht. Welche Möglichkeit habe ich sonst um die letzten Spalten des Arrays zu entfernen?
Gruß und Dank
Axel
Betrifft: AW: Variant Array verkleinern
von: Rudi Maintaire
Geschrieben am: 20.01.2010 12:22:41
Hallo,
du kannst nur die letzte Dimension eines Arrays redimensionieren.
Transponieren-Redimensionieren-Transponieren.
Ergebnisarray=Worsheetfunction.Transpose(Ergebnisarray)
ReDim Preserve Ergebnisarray(1 To 1, 1 To (AnzahlZeilen - Zaehler))
Ergebnisarray=Worsheetfunction.Transpose(Ergebnisarray)
Gruß
Rudi
Betrifft: ungetestet.
von: Tino
Geschrieben am: 20.01.2010 12:29:47
Hallo,
da man nur den rechten Teil Re- Dimensionieren kann,
kannst Du es mal versuchen dieses Array zu Transponieren (drehen)
Ergebnisarray = Application.Transpose(Ergebnisarray) ReDim Preserve Ergebnisarray(1 To 1, 1 To (AnzahlZeilen - Zaehler)) 'Anpassen der Arraygröße Ergebnisarray = Application.Transpose(Ergebnisarray) ReDim Preserve Versuchsplan(1 To UBound(Versuchsplan), 1 To AnzahlSpalten) Versuchsplan = Application.Transpose(Versuchsplan) ReDim Preserve Versuchsplan(1 To AnzahlSpalten, 1 To (AnzahlZeilen - Zaehler)) Versuchsplan = Application.Transpose(Versuchsplan)Oder erstelle zwei neue und fülle diese in einer Schleife.
Betrifft: AW: Variant Array verkleinern
von: Axel
Geschrieben am: 20.01.2010 15:54:40
Danke, ich werden dann wohl einen zweiten Array aufmachen müssen.
Das hatte ich befürchtet -.-
Gruß und Dank
Axel
Betrifft: Noch 'n Array: na und? was soll's
von: Rudi Maintaire
Geschrieben am: 20.01.2010 19:18:46
Hallo,
ich weiß ja jetzt nicht, wie groß deine Arrays sind aber Ich habe letztens 16MB TAB-getrennte .txt auf nem Pentium4 mit 512MB RAM in Arrays verarbeitet. Das ist nichts kritisches.
Gruß
Rudi