.txt-Datei für Excel sauber strukturieren
#1
Hallo Community,

ich habe eine .txt-Datei als Auszug aus einem System, die ich gerne als Exceldatei weiter bearbeiten würde.
Der Inhalt der .txt-Datei ist allerdings nicht gut strukturiert. Das ganze sieht ungefähr so aus (Daten sind inhaltlich abgewandelt):

"Artikel-Nummer     Artikelbezeichnung            Artikelklasse von  Artikelklasse bis                   Preis   
    

YY3                      Zierleiste Decke Eiche zum Kleben (20x20mm) stoßfest Rückstandsfrei zu Entfernen
                                                                  XX78IU               XX78IZ                               5,00    EUR

YZ3                      Zierleiste Decke Eiche zum Kleben (25x25mm) stoßfest Rückstandsfrei zu Entfernen
                                                                  XX78IU               XX78IZ                               6,00    EUR 

YZ3                      Zierleiste Decke Eiche zum Kleben (30x30mm) stoßfest Rückstandsfrei zu Entfernen
                                                                  XX78IU               XX78IZ                              6,00    EUR
                                                                  XX58IU               XX7KLS                              10,00  EUR
                                                                  DS78IU               XS48IZ                              16,00  EUR
                                                                  XX7KLU               XX73IZ                              12,00  EUR
                                                                  XX78IU               XXJHB8                              6,00    EUR
                                                                  LA78IU               XX78IZ                               6,00    EUR
                                                                  XX78IU               XX78IZ                               6,00    EUR

                                                    Artikel-Preismeldung für
                                                        Deutschland
                                                     Stand: 27.05.2020  Jahr 2020


Artikel-Nummer     Artikelbezeichnung            Artikelklasse von  Artikelklasse bis                   Preis

                     
YY3                      Zierleiste Boden Eiche zum Kleben (20x20mm) stoßfest Rückstandsfrei zu Entfernen
                                                                  RR78IU               RR78IZ                               5,00    EUR

……"


Daraus würde ich gerne eine Tabelle in Excel machen, bei der zu jeder Artikelnummer die Bezeichnung, der Bereich der Artikelklasse und der Preis zugeordnet ist. Das Problem ist einmal, dass relevante Daten zur Artikelnummer sich über mehrere Zeilen erstrecken und nicht alles 1:1 zugeordnet ist und dass zwischen den einzelnen Abschnitten noch Text dazwischen ist ("Artikel-Preisemeldung für...").

Hat jemand eine Idee wie ich da eine saubere Struktur draus basteln kann?

Vielen Dank im Voraus und viele Grüße
Top
#2
Hallo,

zeig den beschriebenen Aufbau bitte anhand einer XL-Datei, dann können Vorschläge darin getestet werden. https://www.clever-excel-forum.de/Thread...ng-stellen
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#3
Hallo,

der erste Eindruck:

Wenn man alle mehrfachen blanks auf ein Leerzeichen reduziert und dann Text-in-Spalten anwedet, sollte es schon ziemlich übersichtlich sein.

mfg
Top
#4
Hallo,

die Umwandlung in eine Exceldatei ist eins meiner Problem. Ich stelle Ihnen daher auch die .txt-Datei zur Verfügung.


.txt   Anonymisiert Preisliste.txt (Größe: 2,04 KB / Downloads: 14)


.xlsx   Anonymisiert Preisliste.xlsx (Größe: 16,72 KB / Downloads: 7)
Top
#5
Code:
Sub M_snb()
    MsgBox Application.Trim(Join(Filter(Split(Replace(CreateObject("scripting.filesystemobject").opentextfile("G:\Anonymisiert Preisliste.txt").readall, " EUR", "_EUR"), vbCrLf), "EUR"), vbLf))
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Rolf321
Top
#6
Vielen Dank für die schnelle Antwort.

Ich benötige dazu noch eine kurze Erläuterung. Sorry ich bin da noch nicht so firm drin.

Wo muss ich den Code konkret eingeben?
Top
#7
versuche es mal mit diesem Code:

Code:
Const Pfad As String = "Z:\Foren\" '<< anpassen >>

Sub F_en()
Workbooks.OpenText Filename:= _
        Pfad & "Rolf Preisliste.txt", Origin:=65001, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=False, FieldInfo:=Array(1, 2), _
        TrailingMinusNumbers:=True
Columns(1).Replace " EUR", Chr(160) & "EUR"
For i = 1 To 8
    Columns(1).Replace "  ", " "
Next i

For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
    If InStr(1, Cells(i, 1), "Stand") > 0 Then
        tx = Split(Trim(Cells(i, 1)))(1)
        ActiveSheet.Name = tx
    End If
    If IsEmpty(Cells(i, 1)) Then Rows(i).Delete
    If Len(Cells(i, 1)) > 30 Then
        Cells(i, 2) = Mid(Cells(i, 1), 5)
        Cells(i, 1) = Left(Cells(i, 1), 3)
    End If
    If Left(Cells(i, 1), 1) = " " Then
        tx = Split(Trim(Cells(i, 1)))
        If UBound(tx) >= 3 Then
            Cells(i, 3).Resize(, 4) = Application.Transpose(Application.Transpose(tx))
            Cells(i, 1).Clear
        End If
    End If
Next i
End Sub

------------------
sorry, ich habe snb's Code zu spät gesehen
Top
#8
Hi

für deine Beispiel.txt klappt es mit den Code in der Datei bei mir erst mal.

Da du noch nicht weist wie mit Code umzugehen ist, hier mal die Datei für dich.

.xlsm   Mappe1.xlsm (Größe: 17,52 KB / Downloads: 6)

Gruß Elex
Top
#9
Es geht noch besser:

Lasse zuerst dieses Powershell-Script über die Text-Datei laufen, dann sollte es einfach zu importieren sein:
Code:
$Pfad = 'C:\Users\xxxx\Desktop\'   # anpassen
$f = 'Rolf Preisliste.txt'

$data = get-content ($Pfad + $F) -Encoding UTF8
$data = $data.replace('  EUR', ([char]160 + 'EUR'))

$data = $data -replace ' \(', '@('
$data = $data -replace '\) ', ')@'
$data = $data -replace '(\w)(\s)(\w)', '$1@$3'

for ($i=0; $i -le 9; $i++) {$data = $data.replace('  ', ' ')}

$data | set-content ($Pfad + 'neu_' + $f) -Encoding Unicode
Top
#10
Vielen Dank für die Hilfestellungen von euch. Ich habe die Codes ausprobiert, allerdings kann ich mit den Ergebnissen noch nicht so gut arbeiten.

Das Ziel ist eine Tabelle mit den Daten, die wie folgt aussieht:


.xlsx   Anonymisiert Preisliste3.xlsx (Größe: 10,5 KB / Downloads: 4)


.txt   Anonymisiert Preisliste (2).txt (Größe: 2,04 KB / Downloads: 8)

Vielleicht habt ihr dazu nochmal Ideen. Vielen Dank im Voraus.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste