Как импортировать длинное число из csv в excel без преобразования в научную нотацию в VBA
Я открыл текстовый файл с разделителями с запятой с этим кодом ниже
и длинный номер счета появился как научная нотация после сохранения, чтобы преуспеть независимо от форматирования в текст этой колонки.
Что я сделал здесь неправильно?
Application.ScreenUpdating = False
Workbooks.OpenText fileName:=Filetxt, Origin:=xlWindows, StartRow _
:=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, _
Space:=False, Other:=False, Local:=True, _
FieldInfo:=Array(Array(1, 4), Array(2, xlTextFormat)
'Save text file as csv file
Set wb = ActiveWorkbook
Application.DisplayAlerts = False
wb.SaveAs fileName:=fileXls, FileFormat:=6, _
ReadOnlyRecommended:=False, _
CreateBackup:=False
Application.DisplayAlerts = True
wb.Close savechanges:=True
Запись в txt файле выглядит так:
2011-12-21; 100,00; "21375000120000010020601764"
И когда я открываю недавно сохраненный файл, я вижу вместо этого числа 2.117500012E + 25.
что здесь не так?
Ответы
Ответ 1
Я импортировал продукты в файл excel, и штрих-коды появлялись как научная нотация (например, 5.4265E + 12)
Это означало, что когда я преобразовал файл в файл csv для загрузки деталей, csv не правильно считывал штрих-коды и менял их на 52862300000 и т.д.
Чтобы бороться с ним:
- Открыть как лист Excel (или конвертировать, если вы не можете открыть его как один)
- выделите столбец (штрих-код/научная нотация)
- Перейдите в Data/text в столбцы
- Страница 1: Установите флажок "Разграничено" /Далее
- Страница 2: отметьте "Tab" и измените "Text Qualifier" на "/Next
- Страница 3: Проверьте "Текст", а не "общий"
- Готово
Это должно преобразовать их все, чтобы отображать их как длинные. Затем вы можете сохранить его как файл CSV, и цифры не будут преобразованы/отформатированы в научные числа.
Надеюсь, это поможет!
Ответ 2
В Excel числа ограничены до 15 цифр точности. Номер вашего примера слишком велик, чтобы Excel мог точно представлять, что может объяснить преобразование в научную нотацию.
Вы должны импортировать этот столбец в Excel как текст, а не номер: тогда вы не потеряете точность.
EDIT: если вы перейдете к процессу "открыть из текста" во время записи макроса, вы должны получить что-то вроде этого:
Workbooks.OpenText Filename:= Filetxt, Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 5), Array(2, 1), _
Array(3, 2)), TrailingMinusNumbers:=True
В этом процессе есть шаг, который позволяет вам выбирать, какой тип данных находится в каждом столбце.
Параметр "FieldInfo" немного выключен, я думаю: у вас должно быть 3 столбца, но вы отметили col2 как текст...
Ответ 3
Моя система - Mac OS X El Capitan, когда я копирую данные в Excel из HTML-таблицы, число всегда автоматически преобразуется в 1.10101E + 17 и т.д., Когда я изменяю "формат ячеек" на текст, число неверно.
Мое решение:
- откройте программное обеспечение Mac OS "Numbers" и создайте новую вкладку
- скопируйте данные на вкладку, вы увидите правильный номер
- откройте Microsoft Excel изменить номер столбцы "формат ячеек" в текст
- скопировать данные с вкладки Numbers;
- щелкните правой кнопкой мыши "Дополнительно", выберите "Текст" и "ОК".
Я не знаю почему, но это работает для меня.
Ответ 4
Похоже, вы используете текстовый файл в качестве входных данных. шаги:
- Перейти к ячейке A1
- Файл → Открыть → выбрать файл .txt → Открыть
- Мастер импорта текста откроется. Выполните шаги 1 и 2 в соответствии с форматом входного файла. Для третьего шага сделайте это:
- Используйте мышь, чтобы выбрать столбец, который дает вам головную боль, длинные номера счетов, в вашем случае. В разделе "Формат данных столбца" установите переключатель "Текст", затем нажмите "Готово".
Вам будет хорошо идти.
Ответ 5
Выберите ячейки, где должно быть изменено поле:
'Example:
Columns("A:E").Select
Selection.NumberFormat = "0.00"
Selection.NumberFormat = "0.0"
Selection.NumberFormat = "0"
'The exponential or scientific notation will be converted