如何在电子表格中自动组织文本文件中的数据?

如何在电子表格中自动组织文本文件中的数据?

我有一个这样的文本文件:

原始数据

我希望将其组织到 Excel 中,如下所示:

excel 数据

我可以手动输入两个数据,但我希望能够将其自动化以适应更大的规模。到目前为止,我尝试过的方法是使用 Excel 的内置功能将数据输入其中,但我遇到了困难。我尝试将列转置为行,但这并不能像我想要的那样整齐地组织起来。我需要编写一些代码吗?还是有内置函数?如果我确实需要编写代码,有人可以给我指出正确的方向吗?

谢谢你的时间!

答案1

为此,我会尝试使用 Power Query 插件。它具有强大的数据处理命令。它下面有函数,但只需单击 Power Query 窗口中的按钮即可实现很多功能。在 Power Query 中进行可视化工作通常比在 VBA 中编码容易得多。

我尝试了这个特殊的挑战并成功了。您可以从我的 OneDrive 下载并使用我的演示文件:

http://1drv.ms/1AzPAZp

它是文件:Power Query 演示 - 将行重新组织为列.xlsx

正如自述表上所述,我只需要编写一个简单的函数 - 其余的只是单击 UI。Power Query 很棒!

要将其用于您自己的文本文件,只需编辑查询中的第一步以指向您的文件。顺便说一句,如果需要,您甚至可以让 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

相关内容