Anzeige
Archiv - Navigation
1316to1320
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
txt Datei einlesen
15.06.2013 23:49:50
Andre´
Hallo alle zusammen,
1.)
ich möchte alle Zeilen aus einer TXT Datei in Excel einlesen, wo zwischen dem 5. und 6. Semikolon nicht "11 - Total" und "1SK" steht.
In dem angehängten Bsp.: https://www.herber.de/bbs/user/85849.txt sind nur 5 Zeilen enthalten (im Orginal sind es über 12000 Zeilen) und die Anzahl nach rechts ist auch variabel. Zeile 1 und 3 dürfen somit nur ausgelesen werden.
2.)
die Spalten, wo in Zeile 1 der Wochentag ein Samstag oder Sonntag ist, sollen nicht ausgegeben werden
Gibt es dafür eine Makrolösung?
Vielen Dank im Voraus!
MFG Andre

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

Betreff
Datum
Anwender
Anzeige
AW: txt Datei einlesen
16.06.2013 01:36:43
Oberschlumpf
Hi Andre
...die Spalten, wo in Zeile 1 der Wochentag ein Samstag oder Sonntag ist...
a) in keiner der 5 Zeilen steht Samstag oder Sonntag als Wort drin
woran soll/kann Excel erkennen, dass es sich bei welchem Wert um Sa oder So handelt?
b) wie meinst du das "die Spalten, wo in Zeile 1"?
es handelt sich jeweils immer nur um eine Zeile
c) wie sollen die Zeilen in Excel übergeben werden? Alles aus einer Zeile in eine Zelle - also es werden nur die Zellen A1-A5 gefüllt, oder das Semikolon als Trenner und eben so viele Zellen nutzen, wie Werte innerhalb der Semikolons stehen?
Erstell mal mit der ersten Zeile eine Bsp-Datei, wie das Ergebnis aussehen soll.
Ach so, achte bei der Bsp-Datei bitte darauf, dass du pro Zeile nur maximal 256 Spalten nutzt, da ich noch immer mit Excel 2003 arbeite.
Ciao
Thorsten

Anzeige
AW: txt Datei einlesen
16.06.2013 09:51:26
Andre´
Hallo Thorsten,
erstmal Danke für Deine Meldung.
Ich habe mein Bsp. in Excel erstellt so wie es aussehen soll, die restlichen Spalten ab IV habe ich gelöscht, damit das Bsp. in Excel 2003 ersichtlich wird.
Die 1.Zeile bis zum 8. Semikolon ist immer der gleiche Aufbau, dann kommt das Datum wo geprüft werden soll ob es sich um Samstag oder Sonntag handelt.
Die Zeile 1 (bis zum Zeilenumbruch) muss also immer ausgegeben werden.
Nachfolgend das Ergebnis wie es in Excel aussehen soll. https://www.herber.de/bbs/user/85850.xls
Ich hoffe es gibt eine Lösung.
MFG Andre

Anzeige
du verwirrst mich....
16.06.2013 10:10:48
Oberschlumpf
Hi Andre
...leider noch immer.
1. Du schreibst Die 1.Zeile bis zum 8. Semikolon...usw
Wieso nennst du das 1. Zeile?
In der txt-datei gibt es 5 Zeilen, die alle für sich stehen und jede für sich in Excel eben auch in einer Zeile stehen.
Oder ist das falsch und zu Zeile 1 gehört noch eine weitere Zeile von den 5 gezeigten?
Steht also jede Zeile in der txt-Datei für sich?
Wieso schreibst du dann "1. Zeile"? Liest sich für mich, als ob zu Zeile 1 aus der txt-Datei eine weitere Zeile dazu gehört - dass also in Excel mehrere Zeilen zusammengefasst werden sollen.
Ja, ich seh in der Bsp-Datei die 2 Zeilen, die angezeigt werden sollen. Trotzdem verwirren mich deine Formulierungen.
2. Und welchen Zeilenumbruch in Zeile 1 meinst du?
Für mich hört jede der 5 gezeigten Zeilen jeweils am Ende jeder Zeile auf.
Oder soll die gezeigte 2. Zeile in der txt-datei in Excel ans Ende der ersten Zeile aus der txt-datei angehängt werden?
3. Dann habe ich in deiner Bsp-Datei in Zeile 2 in Spalte I diesen Eintrag gefunden:
17089
In Zeile 1 steht in der selben Spalte der Wert 03.06.2012 - also ein Datum
Sollen nun alle Werte ab Spalte I in Excel als Datum angezeigt werden?
Der Wert 17089 würde als Datum 14.10.1946 ergeben. Ist das so korrekt?
Diese Fragen werden wohl für heute mein einziger Beitrag sein, weil ich gleich bei ner Bekannten die "PC-Notpolizei spielen" muss :-)
Weiß nicht, wann ich wiederkomme.
Wenn du aber noch heute antworten könntest, wäre das klasse.
Danke + Tschüss
Thorsten

Anzeige
AW: du verwirrst mich....
16.06.2013 13:52:16
Andre´
Hallo Thorsten,
erste Zeile deshalb, weil hier der Aufbau (Format) anders ist als bei allen anderen Zeilen.
Ab dem 8.Semikolon in der ersten Zeile kommen nur Datumswerte und ab der Zeile 2 ab dem 8.Seikolon
nur Zahlenwerte (positiv sowie negative Zahlen) die auch so angezeigt werden sollen.
Also nur die erste Zeile ab Spalte I als Datum und alle anderen Zellen als Standard darstellen.
Mit dem Zeilenumbruch hast Du natürlich recht.
Jede Zeile wie in der Txt.Datei soll auch in eine Zeile in Excel angezeigt werden, aber nur wenn in der Excel-Spalte F ab Zeile 2 (zw. 5. und 6.Semikolon der txt Datei)kein "11 - Total" und "1SK" vorkommt.
Ich werde heute Abend erst wieder antworten können!
MFG Andre

Anzeige
Mal ein Vorschlag von meiner Seite,..
16.06.2013 16:16:23
meiner
Hallo Zusammen,
ich weis ja nicht ob du dies schon gemacht hast, aber hier die folgen Schritte mit einer neuen Datei einfach mal durchführen, damit du siehst was passiert:
Datei / Öffnen / unten rechts Dateityp wählen- Textdatei(*.prn;*.txt;*.csv)
deine Text-Datei nun anwählen und öffnen.
Es erscheint der Textkonvertierungsassistent, dort oben getrennt wählen /weiter.
auf der nächsten Seite oben Tabstopp Haken raus und bei Semikolon setzen / weiter.
Folgeseite mit Fertigstellen beenden.
Nun markierst du die Zeile 1 und fügst eine Neue Zeile hinzu.
Diese kannst du nun als Überschriften nutzen oder auch leer lassen.
Markiere jetzt mal Zelle A1:I1 dann oben im Menue auf Daten/ und Filter einschalten.
Wenn du nun in Spalte F den kleinen filterpfeil klickst kannst du die Haken für
11 - Total und 1SK entfernen und mit Ok bestätigen.
Matze
Ps: das ganze mal mit dem Autofilte aufzeichnen,,hmmm ich versuch mal was.

Anzeige
AW: Mal ein Vorschlag von meiner Seite,..
16.06.2013 17:53:37
meiner
Hallo Matze
das mit dem Aufzeichnen habe ich schon probiert, da kommt die Meldung:
zu viele Zeilenfortsetzungen
Es sind mitunter über 365 Spalten, was eigentlich kein Problem mit Excel 2007 darstellt.
MFG Andre

AW: du verwirrst mich....
16.06.2013 22:31:44
Andre´
Hallo alle zusammen,
Ich habe mal eine Orginal txt Datei mit nur einem Monat erzeugt, somit sind weinger Daten in einer Zeile, was auch besser mit 2003 zu bewerkstelligen ist.
Text-Datei https://www.herber.de/bbs/user/85856.txt
und die Exceldatei mit 2 Tabellenblättern:
Sheet(1) mit allen Daten und Sheet(2) so wie es ausshen soll. https://www.herber.de/bbs/user/85857.xls
Ich hoffe, das es dafür eine Makro-Lösung gibt.
MFG Andre

Anzeige
Textdatei einlesen mit Zeilen- und Spaltenauswahl
17.06.2013 09:02:13
Erich
Hi André, (oder gehört der Apostroph nicht über das "e"?)
die folgende Prozedur produziert wohl das Gewünschte - mit einer Abweichung:
In deiner Beispielmappe stehen in den ersten 8 Spalten Zahlen und Texte innerhalb einer Spalte munter durcheinander.
Das führt später leicht zu Verdruss.
Wenn du die Misch-Spalten vor dem Einfügen der Werte als "Text" (@) formatierst, werden das alles Texte.
Probier mal:

Option Explicit
Sub TextAusFileSpezial()
Dim strText As String, arZeil, arWmit, arUeb(), arWoEnd() As Long
Dim zq As Long, cq As Long, cz As Long, zz As Long, iw As Long
Dim myWert, dDat As Date, arWerte()
strText = TxtAusFile("F:\exc\www\tmp\Andre85849T.txt") ' Textfile
strText = TxtAusFile("F:\exc\www\tmp\Andre85856.txt") ' Textfile
arZeil = Split(strText, vbCrLf)           ' Zeilen
arWmit = Split(arZeil(0), ";")            ' Kopfzeilen-Werte
ReDim arUeb(1 To UBound(arWmit) + 1)
ReDim arWoEnd(1 To UBound(arWmit) + 1)
For cq = 0 To UBound(arWmit)
If arWmit(cq)  "" Then
If cq  1 Then        ' nicht Wochenende
cz = cz + 1
arUeb(cz) = dDat
Else                          ' Wochenend-Spalte merken
iw = iw + 1
arWoEnd(iw) = cq
End If
End If
End If
Next cq
Worksheets.Add Before:=Sheets(1)
Union(Columns("A:D"), Columns("F:H")).NumberFormat = "@"  ' Text oder Standard ?
ReDim Preserve arUeb(1 To cz)
Cells(1, 1).Resize(, cz) = arUeb
ReDim arWerte(1 To UBound(arZeil), 1 To cz)
For zq = 1 To UBound(arZeil)
If arZeil(zq)  "" Then
arWmit = Split(arZeil(zq), ";")            ' Zeilen-Werte
If arWmit(5)  """11 - Total""" And arWmit(5)  """1SK""" Then
zz = zz + 1
iw = 1
cz = 0
For cq = 0 To UBound(arWmit)
If cq = arWoEnd(iw) Then
iw = iw + 1
Else
If arWmit(cq)  "" Then
cz = cz + 1
arWerte(zz, cz) = Split(arWmit(cq), """")(1)
End If
End If
Next cq
End If
End If
Next zq
Cells(2, 1).Resize(zz, cz) = arWerte
End Sub
Function TxtAusFile(strFile As String) As String
Dim kan As Long
On Error Resume Next
If FileLen(strFile) = 0 Then Exit Function
On Error GoTo 0
kan = FreeFile
Open strFile For Binary As #kan
TxtAusFile = Space$(LOF(kan))
Get #kan, , TxtAusFile
Close #kan
End Function
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Textdatei einlesen mit Zeilen- und Spaltenauswahl
17.06.2013 10:57:18
Andre´
Hallo Erich,
vielen Dank für die sehr gut funktionierende Lösung, genau so wollte ich es haben!
Ich schreib mich deshalb so Andre´, weil es auch einige andere User mit dem gleich Namen gibt.
Nochmals Danke, Du hast mir damit echt sehr geholfen!
Wirklich super!!!
MFG Andre

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige