Страницы: 1
RSS
Обработка и импорт данных из *.txt файла, Проблема с импортом данных из текстового файла
 
Добрый день,

Возник вопрос по обработке текстового файла.
Имеется:
1)Текстовый файл, содержащий 3 столбца числовых значений + 9 строк заголовка
2)Макрос, который должен этот файл обработать и скопировать из него значения в таблицу
В результате заголовок заменяется на нули, так как выставлена обработка только числовых значений (но это не проблема-впоследствии его все равно удалить), самая проблема в том, что копируется только первый столбец из файла и вставляется во все 3, предназначеные для этого файла в таблице. Файлы приложены. Заранее спасибо за подсказку.
 
Stan, а PQ не подходит?
Код
let
  src = Csv.Document (
    File.Contents ( "C:\Users\Downloads\V000135.TXT" ), 
    [ Delimiter = "   ", Columns = 3, Encoding = 1251, QuoteStyle = QuoteStyle.None ]
  ), 
  typed = Table.TransformColumnTypes ( src, { { "Column1", type number }, { "Column2", type number }, { "Column3", type number } }, "en-US" ), 
  delErrs = Table.RemoveRowsWithErrors ( typed, { "Column1" } )
in
  delErrs
Изменено: surkenny - 11.10.2021 12:58:27
 
surkenny, К сожалению не подойдет, потому что с результатом дальше планируются другие манипуляции в рамках одного макроса. Но больше спасибо за совет!
 
Stan, добрый день.
1. Зачем используете Val()? Эта функция определяет ПЕРВОЕ число из строки, остальные нафиг и в результате у вас только 1 число из трех в txtLine
2. Почему Split по пробелам, когда у вас там разделители между данными - табуляция?
Поэтому в цикле предлагаю как-то так:
Код
    While Not EOF(1)
        Line Input #1, txtLine 'считали первую строку
'затем проверили, содержит ли строка символ табуляции
'chr(9) - символ табуляции код 9, если в полученной строке он есть, значит
'пошли уже данные, шапки нет
If instr(1,txtLine,chr(9))>0 
            i = i + 1 'увеличиваем счетчик
            Cells(i, 1).Resize(1, 3) = Split(txtLine, chr(9)) 'строку разбиваем по знаку табуляции
            'получим данные из текстового файла, но в виде текста, с разделителем точка
            'тут надо покумекать, как заняться преобразованием. То ли в заполненной области поменять точку на запятую
            'и потом перевычислить область, то ли забрать в массив область, к каждому элементу применить Val() и потом 
            'результат выгрузить обратно - это уж сами, ага? :)
End If

    Wend
Изменено: Пытливый - 11.10.2021 17:12:30
Кому решение нужно - тот пример и рисует.
 
Добрый день.
Примеры кода для обработки *.txt файлов

Там у вас в файле столбцы разделены, по моему знаком табуляции, то там возможно пойдет функция Split(ВашаПеременнаяСо_СтрокойизTXT, vbTab(или найти код символа табуляции))
Изменено: DANIKOLA - 11.10.2021 17:27:41
Страницы: 1
Наверх