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

Maximale Größe Datenfeld

Maximale Größe Datenfeld
23.01.2006 21:06:43
Trixi
Kann ich ein Datenfeld unbegrenzt dimensionieren oder gilt dafür auch die maximale Zeilenzahl einer Excel-Tabelle?
Vielen Dank an die Forum-Teilnehmer

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Maximale Größe Datenfeld
23.01.2006 21:09:57
MichaV
Hallo,
Dimensionen einer Datenfeldvariablen. Bis zu 60 Dimensionen sind zulässig. Das Argument Indizes hat die folgende Syntax:
Gruß- Micha
AW: Maximale Größe Datenfeld
23.01.2006 21:16:04
Trixi
JA aber geht z.B.
ReDim MusterArray(1 to 100000) as Variant ?
Danke Euch
AW: Maximale Größe Datenfeld
23.01.2006 21:53:01
Trixi
Also ich verstehe das so, dass ein Array damit nicht mehr als 65536 Werte in einer Dimension enthalten kann und es somit nicht möglich ist, beispielsweise eine Textdatei mit über 65536 Zeilen in ein array einzulesen?
Recht so ?
Anzeige
AW: Maximale Größe Datenfeld
23.01.2006 22:30:24
MichaV
Hallo Trixi,
die Göße des Datenfeldes hängt einzig und allein von der Speicherkapazität Deines Rechners ab.
Hier mal ein Beispiel, welches bei mir problemlos läuft: Einlesen einer Datei mit 500.000 Zeilen in ein Datenfeld. Ich hab Dir gleich beide Möglichkeiten aufgeschrieben, beachte vor allem die zeitlichen Unterschiede.
Problematisch wirds irgendwann, wenn Du mehrere Dimensionen mit einer hohen Feldanzahl hast.


      
Option Explicit
Sub grossesdatenfeld()
Dim i As Long
Dim t
Dim s As String
Const maxFelder = 500000 'Anzahl der einzulesenden Zeilen bzw. _
                            die gewünschte Größe Deines Datenfeldes

ReDim t(1) 'um eine Redimensionierung zu ermöglichen

'Zuerst die Datei erstellen
Open "test.dat" For Output As #1
  
For i = 1 To maxFelder
    
Print #1, "Zeile " & i
  
Next
Close #1
MsgBox "Daten vorbereitet, werden nun eingelesen"
'Einlesen der Datei Zeile für Zeile. Code ist langsam,
'weil das Datenfeld Schritt für Schritt vergrößert werden muß
Open "test.dat" For Input As #1
i = 0
  
Do
    i = i + 1
    Line 
Input #1, s
    
ReDim Preserve t(1 To i)
    t(i) = s
  
Loop Until EOF(1)
  MsgBox "Einlesen Zeile für Zeile" & vbCrLf & "Obergrenze des Datenfeldes: " & 
UBound(t)
Close #1
'Einlesen auf einen Schlag. Das Einlesen an sich dauert genauso lange wie oben,
'aber da das Datenfeld nur 1x durch die Split- anweisung dimensioniert wird,
'wird der Gesamtvorgang enorm beschleunigt
Open "test.dat" For Binary As #1
    s = Space(LOF(1))
    
Get #1, , s
    t = Split(s, vbCrLf)
    MsgBox "Einlesen auf einen Schlag" & vbCrLf & "Obergrenze des Datenfeldes: " & 
UBound(t)
Close #1
Kill "test.dat"
End Sub 


Gruß- Micha
PS: Rückmeldung wäre nett.
Anzeige
Anmerkung
23.01.2006 22:50:14
MichaV
Hallo,
zwischen den beiden Einlese- Methoden gehört noch ein
Erase t
um das Datenfeld wieder zurückzusetzen. Damit verringert sich der zeitliche Unterschied, ist aber immernoch deutlich bemerkbar.
Gruß- Micha
AW: Anmerkung
24.01.2006 00:02:22
Trixi
Danke, hilft mir sehr
Das freut mich! Danke für die Rückmeldung! owT
24.01.2006 00:06:38
MichaV
Nochwas !
24.01.2006 09:46:22
Trixi
Bei mir dauert:
Methode 1 - 1:02
Methode 2 - 0:16
Methode 3 - 0:03 (!!)
und die geht so
Start = Now
Open "test.dat" For Input As #1
txtLines = 0
Do While Not EOF(1)
Line Input #1, Text1 ' Hilfsvariable zum einlesen verwenden
txtLines = txtLines + 1
Loop
Close #1
Open "test.dat" For Input As #1
ReDim t(1 To txtLines)
For i = 1 To txtLines
Line Input #1, t(i)
Next i
Close #1
MsgBox "Einlesen mit doppeltem Durchlauf" & vbCrLf & "Obergrenze des Datenfeldes: " & UBound(t) & " Dauer " & CDate(Now - Start)
Kill "test.dat"
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige