Как остановить Excel от автоматического преобразования значения 0503E000 в 5.03E + 02?

22

Excel преобразовывает значение 0503E000 в 5.03E + 02 в любой ячейке автоматически в CSV. Я попытался преобразовать его в текстовое число и общее значение, но после сохранения и повторного открытия снова возвращается к 5.03E + 02.

Как я могу предотвратить это?

CrashOverride
источник
просто измените ширину столбца, и он должен отображаться нормально
Scorpion99
Вы пытались отформатировать ячейку как текст перед вводом текста?
CharlieRB
попытался
изменить
Если вам нужно использовать значение в виде шестнадцатеричного числа (т.е. вы не можете иметь его в виде текстовой строки), вы можете вложить DEC2HEXи HEX2DECстроки для исходного числа (например, =DEC2HEX(HEX2DEC("0503E000"))для вашего примера). Это может не помочь, если вам нужно манипулировать файлом csv без формул, но это еще один вариант, кроме форматирования как текста.
Майлз

Ответы:

16

Я думаю, что ключевая проблема здесь заключается в том, что вы используете CSV, в который не встроен тип ячейки. Excel автоматически пытается интерпретировать ячейку как имеющую научный номер, поэтому вы видите 5.03E + 02 вместо 0503E000 .

Попробуйте создать книгу Excel и отформатировать все ячейки как текст, а затем вставить данные. Я попробовал это в Excel 2013, и это сработало.

Джейсон Хатчинсон
источник
Да, это работает в Workbook, но, к сожалению, мы должны использовать CSV для этой цели ..... Жаль
CrashOverride
Поэтому не используйте Excel для просмотра содержимого или запуска макроса в ячейке, чтобы преобразовать его обратно или использовать немного другой синтаксис, если вы использовали 0x до того, как значение, которое, как я полагаю, не будет преобразовано,
Ramhound
Я думаю, что нам, возможно, придется уволить это ... потому что, если мы откроем его в другом редакторе, таком как блокнот или блокнот ++, у него будет правильное значение .... поэтому я думаю, что ячейка имеет правильное значение, просто отображая ее в научной нотации ....
CrashOverride
26

Если вы можете преобразовать или контролировать формат CSV , вы можете принудительно проанализировать столбец как текст в Excel, заключив его в двойные кавычки и добавив знак равенства.

Excel будет небрежно отбрасывать точность в этом формате:

Value,0503E000,1234123412341234

Или даже этот формат:

Value,"0503E000","1234123412341234"

Преобразование его в:

Value  |  5.03E+02  |  1234123412341230

Однако добавление знака равенства заставляет Excel неохотно сохранять ваши данные:

Value,="0503E000",="1234123412341234"

... который открывается как:

Value  |  0503E000  |  1234123412341234
brianary
источник
1
Отличное решение при вставке из SQL
SeaSprite
1
Также отличное решение при импорте данных через «Получить внешние данные» в меню «Данные» Excel.
Мохсен Абаси
1
Отличное решение. Единственный (маленький) недостаток в том, что вы получите формулы вместо значений. Так что просто скопируйте все, а затем вставьте значения , что приведет к несколько меньшему размеру файла Excel.
Стеф
9

Вместо « открытия » файла CSV в Excel, выберите « Импортировать файл» (в Excel 2007-2010 вы должны перейти на ленту данных / «Получить внешние данные / из текста»). Не уверен насчет 2013 года, но должно быть что-то подобное. Когда после этого откроется мастер импорта текста, который предоставит вам возможность отформатировать столбец, содержащий это значение, как текст, прежде чем Excel (не так услужливо) изменит его на числовое значение.

Рон Розенфельд
источник
1
Эта. Я почти никогда не открываю файлы CSV напрямую.
pepoluan
@pepoluan Я не понимаю, что ты написал.
Рон Розенфельд
Какую часть вы точно не понимаете?
pepoluan
4
@pepoluan Спасибо. Если бы я понял this, остальное было бы ясно. Думаю, я старею :-(
Рон Розенфельд
1
Я надеялся, что использование «этого» в качестве полного предложения умерло бы быстрой смертью, но через 4 года оно стало таким же сильным, как и всегда.
вариант
2

Запустите ячейку с апострофом, чтобы вызвать интерпретацию текста:

'0502E000

По сути, это говорит Excel не анализировать поле как число. Поскольку в поле есть буква «E», в Excel она выглядит как число. Апостроф фактически не будет введен в клетку:

[a1] '0502E000
[b1] =hex2dec(a1)

Ячейка «b1» будет отображать 84074496.

HardScale
источник
2
Это работает при вводе непосредственно в Excel, но не с файлом CSV.
SBF
При открытии CSV-файла апостроф будет фактически введен в ячейку
Stef
0

Попробуйте загрузить файл (данные, извлеченные из таблицы БД) через опцию DATA в MS Excel, затем просто во время загрузки просто выберите «Не определять типы данных» в «Обнаружении типов данных», затем загрузите, это сохранит формат данных. и загружает Excel, нет необходимости каких-либо преобразований столбцов.

Свапна нунэ
источник
0

Вставьте данные в электронную таблицу Google. Выберите столбец ==> Формат ==> Число => Пользовательский формат => введите количество цифр, для которых вы хотите, чтобы форматирование происходило (например: 10 цифр = 0000000000)

Киран
источник
Я хотел бы предложить лучше редактировать свой пост, так как нужно добавить несколько примеров!
Раджеш С
-1

При стандартном форматировании ячеек числа с нулем впереди и длинными числами автоматически изменяются в Excel. Например, если вы введете 012, он будет изменен на 12.

Если вы отформатируете ячейки как текст , то любое число, введенное в ячейку, останется без изменений и не будет изменено в Excel.

Однако, если вы вставите число из другого источника в ячейку, отформатированную как текст , и в источнике есть какое-либо форматирование, форматирование ячейки изменится с текста на общее , и манипуляции с числами вернутся.

Решением, которое я нашел, было сделать специальную вставку и вставить число как текст . Затем ячейка остается с форматированием текста , а число не изменяется вообще.

Шмуэль Вольфсон
источник