Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige