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