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


22

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

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


просто измените ширину столбца, и он должен отображаться нормально
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

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.


2
Это работает при вводе непосредственно в Excel, но не с файлом CSV.
SBF

При открытии CSV-файла апостроф будет фактически введен в ячейку
Stef

0

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


0

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


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

-1

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.