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

Rießig große textdatei auslesen.

Rießig große textdatei auslesen.
17.03.2005 08:45:54
chris
Hallo VBAler,
ist es denn möglich das ich aus einer textdatei wete auslesen kann , die mehr als 30000 sind also ich habe z.b eine mit 350 000 Werten.
wenn ich mit diesem Code die Werte einlesen will bekomme ich immer einen laufzeitfehler 6 (überlauf) fehler.
Ich möchte aber gerne diese 350000 werte in eine Vriable einlesen und dann aus allen werten die voran ein bestimmtes datum haben einen Mittelwert bilden.
die Zeilen in der Textdatei sehen wie folgt aus.
466.432001.06.2004/00:03:400
usw.....
Vielen Dank für euer bemühungen und Tipps.
grüße Christian

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rießig große textdatei auslesen.
17.03.2005 08:56:03
Ramses
Hallo
SOOO einfach ist das auch nicht:-)
1. Problem
Das einlesen in EINE Variable macht keinen Sinn, da hast du nur einen horrend langen String
2. Problem
Wie willst du deine relevanten Werte finden ?
3. Problem
Die eingelesenen Werte sind nach wie vor TEXT, und keine Zahlen mit denen du rechnen kannst
4. Problem
Um einen Mittelwert bilden zu können, musst du die jeweils relevanten Daten aufteilen um sie zur Berechnung zur Verfügung zu haben.
Lösung/Workaround
Ein Mehrdimensionales Array erstellen das X-Datensätze aufnehmen kann und N-Parameter enthält.
Das einlesen von externen Dateien kannst du hier mal nachlesen
http://www.office.gmxhome.de/_excel_vba_externe_daten.htm
Ein Beispiel für ein mehrdimensionales Array wäre folgendes makro

Sub Dreidimensionales_Array()
Dim i As Integer, n As Integer, m As Integer
Dim arrKosten(4, 1, 1) As Variant
arrKosten(0, 0, 0) = "Mercedes"
arrKosten(1, 0, 0) = "Volkswagen"
arrKosten(2, 0, 0) = "Opel"
arrKosten(3, 0, 0) = "Ford"
arrKosten(4, 0, 0) = "Alfa"
arrKosten(0, 1, 0) = 48500
arrKosten(1, 1, 0) = 32500
arrKosten(2, 1, 0) = 33750
arrKosten(3, 1, 0) = 31250
arrKosten(4, 1, 0) = 39500
arrKosten(0, 1, 1) = 1.17 * arrKosten(0, 1, 0)
arrKosten(1, 1, 1) = 1.17 * arrKosten(1, 1, 0)
arrKosten(2, 1, 1) = 1.17 * arrKosten(2, 1, 0)
arrKosten(3, 1, 1) = 1.17 * arrKosten(3, 1, 0)
arrKosten(4, 1, 1) = 1.17 * arrKosten(4, 1, 0)
'Alles in eine Zelle
For i = 0 To 4
MsgBox ("Das Fahrzeugmodell " & arrKosten(i, 0, 0) & " kostet netto " & arrKosten(i, 1, 0) & " CHF" _
& Chr$(13) & "oder " & arrKosten(i, 1, 1) & " CHF incl. MwSt.")
Next
'... oder in Spalten nebeneinander
For i = 0 To 4
Cells(i + 1, 1).Value = arrKosten(i, 0, 0)
Cells(i + 1, 2).Value = arrKosten(i, 1, 0)
Cells(i + 1, 3).Value = arrKosten(i, 1, 1)
Next i
End Sub

Daa Problem ist nun nur noch, die Daten aus der Datei einlesen, in einem brauchbaren Format an das Array übergeben, die entsprechenden Spalten des Array summieren und durch die Anzahl der Treffer zu dividieren :-)
Viel Spasse :- )
Gruss Rainer
Anzeige
AW: Rießig große textdatei auslesen.
17.03.2005 10:28:57
Horst
Hallo,
hatte vor Längerem was ähnliches Dank Hilfe dieses Forums
und anderer Quellen im Netz gebastelt
...geben und nehmen....
versuch Dich mal, ob Dir das was nützt:
1. Kannst die Funktion in einem Sub aufrufen: TXT_einlesen "MyFile.abc"
2. Die Funktionen Split und ReadUntil sind m.Wissens ab Excel2000
integriert und können weggelassen werden, geht aber bei mir SO auch in Excel XP
3. Das liest erst mal alles ein (Achtung Excel höchstens 65536 Zeilen),
hinterher sortieren und unbenötigte Zeilen löschen)
-------------MODUL START-----------
Public Function Split(ByVal sIn As String, Optional sDelim As _
String, Optional nLimit As Long = -1, Optional bCompare As _
Long = vbBinaryCompare) As Variant
Dim sRead As String, sOut() As String, nC As Long
If sDelim = "" Or Len(sDelim) > Len(sIn) Then
ReDim Preserve sOut(0)
sOut(0) = sIn
Else
sIn = sIn & sDelim
Do While sIn "" And Len(sDelim) sRead = ReadUntil(sIn, sDelim, bCompare)
ReDim Preserve sOut(nC)
sOut(nC) = sRead
nC = nC + 1
If nLimit -1 And nC >= nLimit Then Exit Do
Loop
End If
Split = sOut
End Function

Private Function ReadUntil(ByRef sIn As String, _
sDelim As String, Optional bCompare As Long = vbBinaryCompare) As String
Dim nPos As Long
nPos = InStr(1, sIn, sDelim, bCompare)
If nPos > 0 Then
ReadUntil = Left(sIn, nPos - 1)
sIn = Mid(sIn, nPos + Len(sDelim))
End If
End Function

Public Function TXT_einlesen(ByVal Dateiname As String) As Variant
Dim ReadFile, zeile As String, arr_str As Variant
'leere Tabelle zum Einlesen
Workbooks.Add
'Dialog öffnen auf Basis von *.txt, *.log oder *.dat Files
ReadFile = Dateiname
Open ReadFile For Input As #1
Do While Not EOF(1)
Line Input #1, zeile
arr_str = Split(zeile, vbTab) ' statt vbTab ggf ";" oder ","
j = j + 1
For i = 0 To UBound(arr_str)
Cells(j, i + 1) = arr_str(i)
Next i
Loop
Close #1
End Function
--------------------MODUL END --------
Horst vom Host
(bin für heute "runter" von Herber.de-Rückfragen zwecklos :-) )
Anzeige
AW: Rießig große textdatei auslesen.
17.03.2005 10:31:07
Domke,
Hallo Christian,
bitte beschreibe genauer den Datenbestand, den Du einlesen willst! Handelt es sich um Daten eines unbestimmten Zeitraum oder eines Monats oder...?
Das Einlesen ist relativ einfach, aber mit der Kenntnis vom Inhalt könnte man die Daten evtl. auch in Excel unterbringen. Alternativ pakst Du die Daten in eine Datenbank (Access, MySQL o.ä.) und wertes diese dann entweder innerhalb der Datenbank oder in Excel aus.
Viel Erfolg
Frank.
AW: Rießig große textdatei auslesen.
17.03.2005 14:31:20
chris
Vielen dank euch allen.
Werds mir morgen erst anschauen. Danke

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige