Подтвердить что ты не робот

Как импортировать длинное число из 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. что здесь не так?

4b9b3361

Ответ 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 и т.д., Когда я изменяю "формат ячеек" на текст, число неверно.

Мое решение:

  1. откройте программное обеспечение Mac OS "Numbers" и создайте новую вкладку
  2. скопируйте данные на вкладку, вы увидите правильный номер
  3. откройте Microsoft Excel изменить номер столбцы "формат ячеек" в текст
  4. скопировать данные с вкладки Numbers;
  5. щелкните правой кнопкой мыши "Дополнительно", выберите "Текст" и "ОК".

Я не знаю почему, но это работает для меня.

Ответ 4

Похоже, вы используете текстовый файл в качестве входных данных. шаги:

  1. Перейти к ячейке A1
  2. Файл → Открыть → выбрать файл .txt → Открыть
  3. Мастер импорта текста откроется. Выполните шаги 1 и 2 в соответствии с форматом входного файла. Для третьего шага сделайте это:
  4. Используйте мышь, чтобы выбрать столбец, который дает вам головную боль, длинные номера счетов, в вашем случае. В разделе "Формат данных столбца" установите переключатель "Текст", затем нажмите "Готово".

Вам будет хорошо идти.

Ответ 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