Wie kann ich Daten aus einer Textdatei automatisch in einer Tabelle organisieren?

Wie kann ich Daten aus einer Textdatei automatisch in einer Tabelle organisieren?

Ich habe eine Textdatei wie diese:

Rohdaten

und ich möchte es wie folgt in Excel organisieren:

Excel-Daten

Ich könnte dies für zwei Dateneinträge manuell tun, aber ich würde dies gerne in größerem Umfang automatisieren können. Bisher habe ich versucht, die Daten mithilfe der integrierten Funktion in Excel einzugeben, aber da stecke ich fest. Ich habe versucht, die Spalten in Zeilen umzuwandeln, aber das organisiert sie nicht so ordentlich, wie ich es möchte. Muss ich etwas programmieren oder gibt es eine integrierte Funktion? Wenn ich programmieren muss, könnte mir jemand den richtigen Weg weisen?

Vielen Dank für Ihre Zeit!

Antwort1

Ich würde hierfür das Power Query-Add-In ausprobieren. Es verfügt über leistungsstarke Befehle zur Datenmanipulation. Es gibt zwar darunter Funktionen, aber Sie können viel erreichen, indem Sie einfach auf die Schaltflächen im Power Query-Fenster klicken. Das visuelle Arbeiten in Power Query ist normalerweise viel einfacher als das Codieren in VBA.

Ich habe mich an dieser besonderen Herausforderung versucht und es hat funktioniert. Sie können meine Demodatei von meinem OneDrive herunterladen und verwenden:

http://1drv.ms/1AzPAZp

Es handelt sich um die Datei: Power Query-Demo - Zeilen in Spalten umorganisieren.xlsx

Wie auf dem ReadMe-Blatt beschrieben, musste ich nur eine einfache Funktion schreiben – der Rest war nur Herumklicken in der Benutzeroberfläche. Power Query ist großartig!

Um es für Ihre eigenen Textdateien zu verwenden, bearbeiten Sie einfach den ersten Schritt in der Abfrage, sodass er auf Ihre Datei verweist. Übrigens können Sie Power Query bei Bedarf sogar dazu bringen, die Dateien in einem Ordner zu durchlaufen.

Antwort2

Powershell auf schmutzige Weise.

$xlsFile="c:\temp\your.xlsx"
$excel = new-object -comobject excel.application
$excel.displayAlerts = $false
$wbs=$excel.workbooks.open($xlsFile)
$ws=$wbs.sheets.item(1)
$ws.cells.item(1,1) = "Customer"
$ws.cells.item(1,2) = "Apples"
$ws.cells.item(1,3) = "Bananas"
$ws.cells.item(1,4) = "Oranges"
$row = 1
$reader = [System.IO.File]::OpenText("c:\temp\your.txt")
try {
    while ($true) {
        $line = $reader.ReadLine()
        if ($line -eq $null) { break }
        if ($line.length -lt 3) {continue}
        switch ($line.substring(0,3))
            {
                "Cus" {
                    $val="'"+$line.split("#:")[1]
                    $row++
                    $ws.cells.item($row,1) = $val
                }
                "App" {
                    $val=$line.split(" ")[1]
                    $ws.cells.item($row,2) = $val
                }
                "Ban" {
                    $val=$line.split(" ")[1]
                    $ws.cells.item($row,3) = $val              
                }
                "Ora" {
                    $val=$line.split(" ")[1]
                    $ws.cells.item($row,4) = $val
                }
            }
    }
}
finally {
    $reader.Close()
}
$wbs.saveas($xlsFile)
$wbs.close()
$excel.quit()
$ws = $null
$wbs = $null
$excel = $null

verwandte Informationen