如何自動組織電子表格中文字檔案中的資料?

如何自動組織電子表格中文字檔案中的資料?

我有一個像這樣的文字檔:

原始數據

我想像這樣組織成Excel:

excel數據

我可以手動對兩個資料條目執行此操作,但我希望能夠在更大範圍內自動執行此操作。到目前為止,我嘗試過使用 Excel 的內建功能將資料輸入到 Excel 中,但這就是我陷入困境的地方。我嘗試將列轉置為行,但這並沒有像我想要的那樣整齊地組織它。我需要做一些編碼還是有內建函數?如果我確實需要編碼,有人可以指出我正確的方向嗎?

謝謝你的時間!

答案1

我會嘗試使用 Power Query 插件來實現此目的。它具有用於操作數據的強大命令。以下有一些功能,但只需點擊 Power Query 視窗中的按鈕即可實現很多功能。在 Power Query 中進行視覺化工作通常比在 VBA 中進行編碼容易得多。

我嘗試了這個特殊的挑戰並取得了成功。您可以從我的 OneDrive 下載並使用我的演示檔案:

http://1drv.ms/1AzPAZp

這是檔案:Power Query 示範 - 將行重新組織為列.xlsx

正如自述文件中所述,我只需編寫一個簡單的函數 - 其餘的只需在 UI 上單擊即可。電源查詢太棒了!

要將其用於您自己的文字文件,只需編輯查詢中的第一步以指向您的文件。順便說一句,如果需要,您甚至可以讓 Power Query 循環遍歷資料夾中的檔案。

答案2

Powershell 以一種骯髒的方式。

$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

相關內容