Microsoft Excel

Herbers Excel/VBA-Archiv

Variant Array verkleinern | Herbers Excel-Forum


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.

Gruß Tino


  

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


Beiträge aus den Excel-Beispielen zum Thema "Variant Array verkleinern"