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

Forumthread: Werte einer txt-Datei sortieren

Werte einer txt-Datei sortieren
29.03.2022 13:17:21
Reiner
Hallo zusammen,
ich habe eine Excel Tabelle mit Hilfe eines Makros ausgelesen und die Daten in einer txt-Datei abgelegt. Da die Daten in meiner Excel Tabelle nicht sortiert waren, sind sie in der txt-Datei auch nicht sortiert. Die Excel Tabelle vor dem auslesen ist unmöglich, da feste Vorgabe. In der Ausgabedatei sind die Einträge der einzelnen Zellen durch Semikolon getrennt. In der Spalte 5 befindet sich eine 5-stellige Nummer, nach der aufsteigend sortiert werden soll. Ich füge die txt-Datei bei.
Hier der Pfad: https://www.herber.de/bbs/user/152129.txt
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte einer txt-Datei sortieren
29.03.2022 13:22:52
Oberschlumpf
Hi Reiner
die txt-Datei ist doch schon nach Spalte 5 (E) aufsteigend sortiert?
Ciao
Thorsten
AW: Werte einer txt-Datei sortieren
29.03.2022 13:40:37
Reiner
Hallo Thorsten,
schön dass du dich meldest. Habe gar nicht damit gerechnet, dass das so schnell geht.
Wenn du die Datei nach unten scrolls, wirst du sehen, dass die Nummern in der Spalte 5 mit 2 an zweiter Stelle anfangen an, dann folgt die 4, die 5, die 3, die 6 und am Ende die 7 und die 9. Die Nummern sollen in nummerischer Reihenfolge sortiert werden.
Gruß
Reiner
Anzeige
AW: Werte einer txt-Datei sortieren
29.03.2022 13:45:00
Oberschlumpf
huch, muss mich korrigieren!
zwischendrin sind dann doch mal Zahlen, die wieder kleiner sind, als die Vorhergehenden.
Aber Chris hat schon recht.
1. VOR dem Exportieren in txt-Datei alles kopieren und in ein neues Tabellenblatt einfügen
2. Daten im neuen Blatt nach Spalte E sortieren
3. Daten aus neuem Blatt in txt-Datei exportieren
4. neues Blatt löschen
alles ist gut :-)
Hilft das?
Anzeige
AW: Werte einer txt-Datei sortieren
29.03.2022 13:52:48
Reiner
Hallo Thorsten,
die Lösung geht leider nicht. Die Daten in der txt-Datei sind von mehreren Reitern unterschiedlicher Ausprägung. Ein manuelles zusammen sortieren wäre ein riesen Aufwand.
Gruß
Reiner
AW: Werte einer txt-Datei sortieren
29.03.2022 13:58:23
UweD
Hallo nochmal
Dann schreib die Daten NICHT sofort in die Textdatei, sondern in ein "Neues" Tabellenblatt, sortiere dann (per VBA) und exportiere die Datei als CSV (mit der .TXT Endung)
Das temporäre Blatt kannst du dann verwerfen.
LG UweD
Anzeige
AW: Werte einer txt-Datei sortieren
29.03.2022 13:28:14
ChrisL
Hi Rainer
Kopiere die Daten bzw. das Blatt vor dem Export, sortieren, exportieren und dann die Kopie verwerfen.
Unabhängig vom exakten vorgehen, sollten die Daten vor dem Export sortiert werden. Es macht keinen Sinn die Daten erst zu exportieren, dann wieder nach Excel zu importieren, nur ums sie zu sortieren und dann wieder zu exportieren.
cu
Chris
Anzeige
AW: Werte einer txt-Datei sortieren
29.03.2022 13:48:54
Reiner
Hallo Chris,
dein Vorschlag ist sicher nicht einer der schlechtesten. Doch geht leider nicht. Ich brauche hier die Sortierung über das VBA, da ich die Zahlen als Datensätze weiter verarbeiten muss.
Gruß
Reiner
AW: Werte einer txt-Datei sortieren
29.03.2022 13:51:58
Oberschlumpf
Hi Reiner,
wie jetzt?
In der Tabelle darf nix geändert werden, aber die Daten müssen trotzdem sortiert sein?
Ja, und wohin solln die Daten dann geschrieben werden?
Nur mit VBA sortiert, heißt ja, dass die - sortierten Daten - dann nur im Arbeitsspeicher sind...und nur im Speicher..nirgdwo anders...
Sorry, jetzt kapier ich gar nix mehr
Ciao
Thorsten
Anzeige
AW: Werte einer txt-Datei sortieren
29.03.2022 13:58:40
Reiner
Hallo Thorsten,
die txt-Datei ist die Ausgabedatei meines Makros. In ihr sind die Daten der Excel Tabellenblätter zusammen geschrieben. Da die Daten von Tabellenblatt 1 mit den Nummern 2, 4 u 5 beginnen, die Daten aus Tabellenblatt 2 mit 3 u 6 beginnen und die Daten aus Tabellenblatt 3 mit 7 u 9 beginnen, benötige ich die Sortierung in der txt-Datei. Eine Sortierung in Excel ist nicht möglich, da in jedem Tabellenblatt die Werte in anderen Spalten stehen.
Gruß
Reiner
Anzeige
AW: Werte einer txt-Datei sortieren
29.03.2022 13:54:29
UweD
Hallo
&GT&GTIch brauche hier die Sortierung über das VBA
das sollst du ja gar nicht manuell vornehmen. Das Sortieren kannst du ja im Makro ausführen lassen.
Zeig doch mal deinen Code
LG UweD
AW: Werte einer txt-Datei sortieren
29.03.2022 14:48:44
UweD
Hallo
mangels Daten habe ich das nur überflogen und nicht getestet.
- 1) Anstelle des Open...legt du eine neue Datei an
- 2) Innerhalb der Schleife, wo die die Sätze schreibst füllst du die Zellen im neuen Blatt
- 3) wo du die Ausgabedatei schließt, speicherst du stattdessen die Neue Datei als csv
So machst du es

Open "stat-blk" For Output Access Write As hnd_blk   '1)
Print #hnd_blk, to_write  '2)
Close #hnd_blk   '3)
Hier mal die analogen Anweisungen

Pfad = "E:\Excel\Temp\" 'mit \am Ende
Datei = "stat-blk"
'1)
Set tmp = Workbooks.Add
'deine Schleife
'2)
tmp.Sheets(1).Cells(Z + 1, 1) = to_write
Z = Z + 1
'Ende deine Schleife
'3)
tmp.SaveAs Filename:=Pfad & Datei & ".txt", FileFormat:=xlCSV
tmp.Close

Anzeige
Hatte ja
29.03.2022 15:36:30
UweD
..das Sortieren noch nicht drin.
so

to_write = "HP;K;47056789;2022;02000;599500;599500;;605000;597200;626125;" 'Test
Pfad = "E:\Excel\Temp\" 'mit \am Ende
Datei = "stat-blk"
'1)
Set tmp = Workbooks.Add
'deine Schleife
'2)
tmp.Sheets(1).Cells(Z + 1, 1) = to_write
Z = Z + 1
'Ende deine Schleife
'3)
'Neu Sortieren
With tmp.Sheets(1)
.Columns("A:A").TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, Semicolon:=True
.Sort.SortFields.Add2 Key:=.Columns(5), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange Range("A1:L3")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
tmp.SaveAs Filename:=Pfad & Datei & ".txt", FileFormat:=xlCSV, Local:=True
tmp.Close
LG UweD
Anzeige
AW: Hatte ja
29.03.2022 15:41:16
UweD
sorry war nur auf mein Muster begrenzt.
Ändern in

With .Sort
.SetRange tmp.Sheets(1).UsedRange

nur mal so ne Frage...
29.03.2022 19:43:27
Oberschlumpf
Reiner, wieso machst du es uns denn so schwer?
Wieso zeigst du den Code in einer txt-Datei und nicht gleich in einer Bsp-Excel-Datei?
Schau dir mal die txt-Datei mit Code selbst an - da is so vieles durcheinander...war mein erster Eindruck....so, dass zumindest ich keine Lust hab, das alles erst mal lauffähig in eine xlsm-Datei zu übertragen...
Anzeige
von Kanonen und Spatzen
29.03.2022 13:59:12
Kanonen
Hallo,
als Beispiel:

Sub StartExport()
Dim vntARR() As Variant
Dim i As Long, j As Long
Dim strOUT As String
With Cells(1, 1).CurrentRegion
ReDim vntARR(1 To .Rows.Count, 1 To .Columns.Count)
vntARR = .Value
End With
Call prcSort(Array(5), vntARR)
Open "c:\test\test.txt" For Output As #1
For i = 1 To UBound(vntARR)
strOUT = vbNullString
For j = 1 To UBound(vntARR, 2)
strOUT = strOUT & ";" & vntARR(i, j)
Next j
Print #1, Mid(strOUT, 2)
Next i
Close #1
End Sub
Sub prcSort(vntSortKey As Variant, vntArray() As Variant)
Dim intIndex As Integer
Dim lngIndex1 As Long, lngIndex2 As Long, lngRowsArray() As Long
Dim lngRowsCount As Long, lngRangeCount As Long
Dim vntTemp As Variant
ReDim lngRowsArray(0 To 1, 0 To UBound(vntArray) * 2)
Dim i As Integer
'Array für den 1. Sortierlauf
lngRowsArray(0, 0) = LBound(vntArray)
lngRowsArray(0, 1) = UBound(vntArray)
lngRowsCount = 1
For intIndex = LBound(vntSortKey) To UBound(vntSortKey)
'Wenn eine Spalte angegeben
If vntSortKey(intIndex)  0 Then
lngRangeCount = -1
'Schleife zum sortieren der einzelnen Bereiche
For lngIndex1 = 0 To lngRowsCount Step 2
'Sortieren des Bereichs, wenn Zeilenzahl größer 1
If lngRowsArray(0, lngIndex1)  lngRowsArray(0, lngIndex1 + 1) Then
Call prcQuickSort(CLng(lngRowsArray(0, lngIndex1)), _
CLng(lngRowsArray(0, lngIndex1 + 1)), CInt(Abs(vntSortKey(intIndex))), _
CBool(vntSortKey(intIndex) > 0), vntArray())
'sortierten Bereich merken
lngRangeCount = lngRangeCount + 2
lngRowsArray(1, lngRangeCount - 1) = lngRowsArray(0, lngIndex1)
lngRowsArray(1, lngRangeCount) = lngRowsArray(0, lngIndex1 + 1)
End If
Next
lngRowsCount = -1
'Durchsuchen der soeben sortierten Spalte nach Wertewechsel
For lngIndex1 = 0 To lngRangeCount Step 2
'1. Zeile des zu sortierenden Bereichs
vntTemp = vntArray(lngRowsArray(1, lngIndex1), Abs(vntSortKey(intIndex)))
lngRowsCount = lngRowsCount + 1
lngRowsArray(0, lngRowsCount) = lngRowsArray(1, lngIndex1)
'Suche nach Wechsel innerhalb des Bereichs
For lngIndex2 = lngRowsArray(1, lngIndex1) To lngRowsArray(1, lngIndex1 + 1)
If vntTemp  vntArray(lngIndex2, Abs(vntSortKey(intIndex))) Then
lngRowsCount = lngRowsCount + 2
lngRowsArray(0, lngRowsCount - 1) = lngIndex2 - 1
lngRowsArray(0, lngRowsCount) = lngIndex2
vntTemp = vntArray(lngIndex2, Abs(vntSortKey(intIndex)))
End If
Next
'letzte Zeile des zu sortierenden Bereichs
lngRowsCount = lngRowsCount + 1
lngRowsArray(0, lngRowsCount) = lngRowsArray(1, lngIndex1 + 1)
Next
End If
Next
End Sub
Private Sub prcQuickSort(lngLbound As Long, lngUbound As Long, _
intSortColumn As Integer, bntSortKey As Boolean, vntArray() As Variant)
Dim intIndex As Integer
Dim lngIndex1 As Long, lngIndex2 As Long
Dim vntTemp As Variant, vntBuffer As Variant
lngIndex1 = lngLbound
lngIndex2 = lngUbound
vntBuffer = vntArray((lngLbound + lngUbound) \ 2, intSortColumn)
Do
If bntSortKey Then
Do While vntArray(lngIndex1, intSortColumn)  vntBuffer
lngIndex1 = lngIndex1 + 1
Loop
Do While vntBuffer > vntArray(lngIndex2, intSortColumn)
lngIndex2 = lngIndex2 - 1
Loop
End If
If lngIndex1  _
vntArray(lngIndex2, intSortColumn) Then
For intIndex = LBound(vntArray, 2) To UBound(vntArray, 2)
vntTemp = vntArray(lngIndex1, intIndex)
vntArray(lngIndex1, intIndex) = _
vntArray(lngIndex2, intIndex)
vntArray(lngIndex2, intIndex) = vntTemp
Next
End If
lngIndex1 = lngIndex1 + 1
lngIndex2 = lngIndex2 - 1
ElseIf lngIndex1 = lngIndex2 Then
lngIndex1 = lngIndex1 + 1
lngIndex2 = lngIndex2 - 1
End If
Loop Until lngIndex1 > lngIndex2
If lngLbound 
Gruß
Rudi
Anzeige
AW: Werte einer txt-Datei sortieren
29.03.2022 14:12:06
Daniel
Hi
Schritt 1: Datei mit Excel öffnen, da Semikolon das Trennzeichen ist, den Zusatz Local:=True verwenden
Schritt 2: Tabelle wie gewünscht sortieren
Schritt 3: Tabelle mit Save speichern.

Workbooks.Open "Dein Pfad und Dateiname.txt", local:=True
ActiveWorkbook.Sheets(1).Sort Key:=.Cells(1, 5), order1:=xlascending, header:=xlno
ActiveWorkbook.Save
ActiveWorkbook.Close
besser ist natürlich, das Erstellungsmakro so umzuschreiben, dass die Daten zuerst in eine gemeinsame Exceltabelle zusammenkopiert werden, dann kannst du sie dort sortieren und danach die Text-Datei erstellen.
ist wahrscheinlich etwas umständlich, das in ein bestehendes Makro einzubauen, aber das hier ist nachträgliche Flickschusterei.
Gruß Daniel
Anzeige
AW: Werte einer txt-Datei sortieren
29.03.2022 15:21:24
Reiner
Hallo ihr fleißigen Helfen,
ich muss mich jetzt erst einmal sortieren und mir die vielen Möglichkeiten, die ihr aufgezeigt habt, ansehen. Ich melde mich wieder. Habt aber erst einmal herzlichen Dank für die schnelle Hilfe.
Gruß
Reiner
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Werte einer txt-Datei in Excel sortieren


Schritt-für-Schritt-Anleitung

Um die Werte einer txt-Datei in Excel zu sortieren, folge diesen Schritten:

  1. Öffne die txt-Datei in Excel:

    • Gehe zu Datei > Öffnen und wähle die txt-Datei aus. Achte darauf, das Trennzeichen auf Semikolon einzustellen.
  2. Daten sortieren:

    • Markiere die gesamte Tabelle und gehe zu Daten > Sortieren.
    • Wähle die 5. Spalte (E) aus und stelle die Sortierreihenfolge auf Aufsteigend.
  3. Speichern der sortierten Daten:

    • Speichere die Tabelle als CSV (Textdatei) über Datei > Speichern unter und wähle das Format .txt.
  4. Schließe die Datei:

    • Schließe die Excel-Datei, um sicherzustellen, dass alle Änderungen gespeichert sind.

Häufige Fehler und Lösungen

  • Fehler: Die Daten sind nicht korrekt sortiert.

    • Lösung: Überprüfe, ob die richtige Spalte zum Sortieren ausgewählt wurde und ob die Daten als Zahlen formatiert sind.
  • Fehler: Fehlermeldungen beim Öffnen der txt-Datei.

    • Lösung: Stelle sicher, dass beim Öffnen der Datei das local:=True-Argument verwendet wird, um Probleme mit dem Trennzeichen zu vermeiden.

Alternative Methoden

  1. VBA zur Automatisierung: Du kannst ein Makro schreiben, das die Daten automatisch sortiert und in eine neue txt-Datei exportiert. Hier ist ein Beispiel:

    Sub SortiereUndExportiere()
       Dim ws As Worksheet
       Set ws = ThisWorkbook.Sheets(1)
    
       ' Daten sortieren
       ws.Sort.SortFields.Clear
       ws.Sort.SortFields.Add Key:=ws.Range("E:E"), Order:=xlAscending
       ws.Sort.Apply
    
       ' In txt-Datei exportieren
       ws.SaveAs "Pfad\zu\deiner\Datei.txt", FileFormat:=xlText
    End Sub
  2. Daten in ein neues Tabellenblatt verschieben: Du kannst die Daten zuerst in ein neues Tabellenblatt kopieren, dort sortieren und dann exportieren. Dies hilft, die Originaldaten unverändert zu lassen.


Praktische Beispiele

  • Beispiel 1: Wenn deine txt-Datei Daten im folgenden Format hat:

    Name;Alter;Stadt;PLZ;Nummer
    Max;25;Berlin;10115;2
    Anna;30;Hamburg;20095;4
    Peter;22;München;80331;3

    Nach dem Sortieren nach der 5. Spalte (Nummer) könnte das Ergebnis so aussehen:

    Name;Alter;Stadt;PLZ;Nummer
    Max;25;Berlin;10115;2
    Peter;22;München;80331;3
    Anna;30;Hamburg;20095;4
  • Beispiel 2: Wenn du mit VBA arbeitest, könnte der Code wie folgt aussehen:

    Sub BeispielExport()
       Dim dataArray As Variant
       ' Daten laden
       dataArray = Application.Transpose(ThisWorkbook.Sheets(1).UsedRange)
    
       ' Sortieren und Exportieren
       Call prcSort(Array(5), dataArray)
       ' Logik zum Exportieren in txt-Datei hier einfügen
    End Sub

Tipps für Profis

  • Nutze die TextToColumns-Methode in Excel, um Daten aus der txt-Datei schneller zu importieren.
  • Achte darauf, dass die Datenformate (z. B. Zahlen, Text) korrekt eingestellt sind, bevor du die Daten sortierst.
  • Arbeite mit VBA, um die Daten aus txt in Excel zu importieren und gleichzeitig zu sortieren, um Zeit zu sparen.

FAQ: Häufige Fragen

1. Wie kann ich eine txt-Datei in Excel öffnen? Um eine txt-Datei in Excel zu öffnen, gehe auf Datei > Öffnen, wähle die Datei aus und stelle sicher, dass die richtigen Optionen für das Trennzeichen ausgewählt sind.

2. Kann ich die Sortierung automatisch in einem Makro durchführen? Ja, du kannst ein VBA-Makro erstellen, um die Daten zu sortieren und in eine txt-Datei zu exportieren, wie im obigen Beispiel gezeigt.

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