Данные реформата из файла CSV
У меня есть данные из файла csv. Один столбец содержит текст «0.2.11», который мне нужно переформатировать на «00.02.0011», ведущие нули и длина разделенных точками деталей имеют решающее значение. Это не даты, просто случайные числа. Как я могу переформатировать их?
Благодарю.
- Ошибка преобразования типа в Access 2013
- Отделитель изменений версии Excel Excell при сохранении
- Excel экспортирует сотни пустых столбцов в CSV-экспорт
- Активировать конкретный лист Excel в задаче скрипта SSIS
- Записывать несколько файлов excel / csv из большого файла data.frame
- Как конвертировать несколько файлов xls в csv с помощью powershell?
- JSON to CSV: Как добавить фильтры (столбцы) в итоговую таблицу Excel?
- автоматически сохранять вложения конвертировать в csv
- Определенная пользователем функция Excel для чтения файлов CSV?
- Компонента Excel через powershell
- Почему CSV-файл не отображает столбцы в виде столбцов?
- excel - сохранение в виде csv изменений формата и данных
- Как экспортировать в .XLS из разделенного вкладками .CSV (Rails)
Я знаю, что это безумно длинная формула, но я считаю, что она сделает то, что вы ищете:
=IF(LEN(IF(ISERR(FIND(".",A1)),A1,LEFT(A1,FIND(".",A1)-1)))=2,IF(ISERR(FIND(".",A1)),A1,LEFT(A1,FIND(".",A1)-1)),"0"&IF(ISERR(FIND(".",A1)),A1,LEFT(A1,FIND(".",A1)-1)))&"."&IF(RIGHT(MID(A1,FIND(".",A1)+1,2))<>".",MID(A1,FIND(".",A1)+1,2),"0"&LEFT(MID(A1,FIND(".",A1)+1,2),1))&"."&IF(LEN(RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,".","*",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))))=4,RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,".","*",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))),IF(LEN(RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,".","*",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))))=3,"0"&RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,".","*",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))),IF(LEN(RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,".","*",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))))=2,"00"&RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,".","*",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))),"000"&RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,".","*",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))))))
Вероятно, достаточно долго, что вам нужно будет сохранить это в одном из новых форматов Excel, таких как .xlsx или .xlsm для его сохранения. Если у вас есть проблемы с этим, дайте мне знать, у меня также есть формула, разбитая на несколько ячеек (или шагов), если вам это нужно.
Существует более короткая (но все же уродливая) формула Excel с использованием функции TEXT для форматирования:
=TEXT(MID(A1,1,FIND(".",A1)-1),"00") &"."& TEXT(MID(A1,FIND(".",A1)+1,FIND(".",A1,FIND(".",A1)+1)-FIND(".",A1)-1),"00") &"."& TEXT(RIGHT(A1,LEN(A1)-FIND(".",A1,FIND(".",A1)+1)),"0000")
Я хотел бы указать, что существуют другие методы решения одной и той же проблемы. Если у вас много больших файлов csv, вы можете рассмотреть возможность предварительной обработки перед импортом в Excel. Например, выполнение одной и той же работы в awk тривиально:
BEGIN { while(getline < "e.csv") { split($1,a,"."); printf("%02d.%02d.%04d\n",a[1],a[2],a[3]); } }
Gawk хорошо работает с Windows. После установки вы можете запустить его в командной строке Windows или PowerShell как .\awk -f x.awk
где x.awk – это код выше в текстовом файле.