我有一个这样的文本文件:
我希望将其组织到 Excel 中,如下所示:
我可以手动输入两个数据,但我希望能够将其自动化以适应更大的规模。到目前为止,我尝试过的方法是使用 Excel 的内置功能将数据输入其中,但我遇到了困难。我尝试将列转置为行,但这并不能像我想要的那样整齐地组织起来。我需要编写一些代码吗?还是有内置函数?如果我确实需要编写代码,有人可以给我指出正确的方向吗?
谢谢你的时间!
答案1
为此,我会尝试使用 Power Query 插件。它具有强大的数据处理命令。它下面有函数,但只需单击 Power Query 窗口中的按钮即可实现很多功能。在 Power Query 中进行可视化工作通常比在 VBA 中编码容易得多。
我尝试了这个特殊的挑战并成功了。您可以从我的 OneDrive 下载并使用我的演示文件:
它是文件: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