Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code anpassen

Forumthread: Code anpassen

Code anpassen
24.11.2006 09:52:49
Trixi
Hallo Experten,
Habe csv-Datei in ein Array (sTxt) eingelesen.
Vermittels folgenden Codes wird das ganze aufgesplittet in ein mehrdimensionales Array.
Do While InStr(sTxt, ",")
TextArr(iCount, iCol) = Left(sTxt, InStr(sTxt, ",") - 1)
sTxt = Right(sTxt, Len(sTxt) - InStr(sTxt, ","))
iCol = iCol + 1
Loop
Leider gibt Excel2000 csv-Dateien mit Komma als Delimiter aus.
Die Struktur ist folgende:
A,B,C,D,E,"F1, F2",G,H
Ich müsste nun obigen Code so anpassen, dass der in Anführungszeichen stehende Bereich nicht aufgesplittet sondern in Toto als Arrayfeld übernommen wird.
Kann mir jemand helfen?
Vielen Dank
Trixi
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code anpassen
24.11.2006 10:38:53
Coach
Hallo Trixi,
das geht dann prinzipiell so:
Option Explicit

Sub TextSplit_IgnoriereTrennzeichenInAnfuehrungszeichen()
Dim TextArr(1 To 2) As Variant, i As Long, j As Long
TextArr(1) = Split(InAnfZ("d,b,""g,b"",e,f", ",", "°"), ",", -1, vbTextCompare)
TextArr(2) = Split(InAnfZ("1,2,""5,6,7,8,9,""98,78,67", ",", "°"), ",", -1, vbTextCompare)
For i = 1 To 2
For j = LBound(TextArr(i)) To UBound(TextArr(i))
TextArr(i)(j) = InAnfZ(TextArr(i)(j), "°", ",")
Next
Next
End Sub


Function InAnfZ$(ByVal iStr$, ByVal AltesZeichen$, ByVal NeuesZeichen$)
Dim a1 As Long, a2 As Long
a1 = InStr(1, iStr, """", vbTextCompare)
Do While a1 <> 0
a2 = InStr(a1 + 1, iStr, """", vbTextCompare)
If a2 = 0 Then Exit Do
iStr = Left(iStr, a1) & Replace(Mid(iStr, a1 + 1, a2 - a1 - 1), AltesZeichen, NeuesZeichen) & Mid(iStr, a2)
a1 = InStr(a2 + 1, iStr, """", vbTextCompare)
Loop
InAnfZ = iStr
End Function

Gruß Coach
Anzeige
AW: Code anpassen
24.11.2006 13:23:10
Trixi
Sieht ja recht kompliziert aus.
Vor allem verstehe ich den Code nicht gut genug um ihn für mich anzupassen.
Brauche ich Textarr 1 und 2 ?
Ich habe momentan sTxt(1 to Zeilenzahl_der_CSV) und
TextArr(1 to uBound(sTxt), 1 to 18)
Trixi
AW: Code anpassen
24.11.2006 14:01:28
Coach
Hallo Trixi,
das wäre dann:
Dim sTxt$(1 To 2), TextArr() As Variant, i As Long, j As Long
stxt() füllen
ReDim TextArr(1 To UBound(sTxt))
For i = 1 To UBound(sTxt)
TextArr(i) = Split(InAnfZ(sTxt(i), ",", "°"), ",", -1, vbTextCompare)
For j = LBound(TextArr(i)) To UBound(TextArr(i))
TextArr(i)(j) = InAnfZ(TextArr(i)(j), "°", ",")
Next
Next
Wenn die sTXT-Zeilen unterschiedliche viele relevante Trennzeichen haben, sind die TextArr-Zeilen auch unterschiedlich gross, die Adressierung läuft auch immer über ()(), nicht (,).
Gruß
Coach
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige