1

У меня есть текстовый файл, как это:

необработанные данные

и я хотел бы организовать в Excel, как это:

данные Excel

Я мог бы сделать это вручную вручную для двух записей данных, но я хотел бы иметь возможность автоматизировать это для большего масштаба. До сих пор я пробовал вводить данные в Excel, используя встроенную функцию, но вот где я застрял. Я пытался переставить столбцы в строки, но это не организовало их так, как я хочу. Нужно ли делать кодирование или есть встроенная функция? Если мне нужно кодирование, кто-то может указать мне правильное направление?

Спасибо за ваше время!

2 ответа2

0

Я бы попробовал надстройку Power Query для этого. Он имеет мощные команды для манипулирования данными. Внизу есть функции, но вы можете многого добиться, просто нажав кнопки в окне Power Query. Визуально работать в Power Query обычно намного проще, чем в VBA.

Я попробовал этот конкретный вызов и заставил его работать. Вы можете скачать и использовать мой демонстрационный файл с моего OneDrive:

http://1drv.ms/1AzPAZp

Это файл: Power Query demo - реорганизация строк в columns.xlsx

Как описано в листе ReadMe, мне нужно было написать только одну простую функцию - остальные просто щелкали по интерфейсу. Power Query - это здорово!

Чтобы использовать его для своих собственных текстовых файлов, просто измените первый шаг в запросе, чтобы он указывал на ваш файл. Кстати, вы можете даже заставить Power Query зацикливать файлы в папке, если это необходимо.

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .