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

90313
CrashOverride

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

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

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

5 ответов на вопрос

17
brianary

If you can convert or control the CSV format, you can force a column to parse as text in Excel by wrapping it in double quotes and prepending an equals sign.

Excel will carelessly discard precision in this format:

Value,0503E000,1234123412341234 

Or even this format:

Value,"0503E000","1234123412341234" 

Converting it to:

Value | 5.03E+02 | 1234123412341230 

However, adding the equals sign forces Excel to begrudgingly preserve your data:

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

…which opens as:

Value | 0503E000 | 1234123412341234 
Отличное решение при вставке из SQL SeaSprite 7 лет назад 1
Также отличное решение при импорте данных через «Получить внешние данные» в меню «Данные» Excel. Mohsen Abasi 6 лет назад 1
11
Jason Hutchinson

I think the key issue here is that you are using a CSV, which does not have the cell type embedded in it. Excel automatically tries to interpret the cell as having a scientific number which is why you are seeing 5.03E+02 instead of 0503E000.

Try creating an Excel workbook and formatting all of the cells as text, and then pasting in the data. I tried it in Excel 2013 and it worked.

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

Instead of Opening" the CSV file in Excel, select to Import the file (in Excel 2007-2010 you would navigate to the Data Ribbon / Get External Data / From Text). Not sure about 2013 but there should be something similar. When you do that, the Text Import wizard will open and afford you the opportunity to format the column containing that Value as Text, before Excel (not so helpfully) changes it to a numeric value.

Это. Я почти никогда не открываю файлы CSV напрямую. pepoluan 9 лет назад 1
@pepoluan Я не понимаю, что ты написал. Ron Rosenfeld 9 лет назад 0
Какую часть вы точно не понимаете? pepoluan 9 лет назад 0
@pepoluan. Актуальность того, что вы написали для моего ответа. Ron Rosenfeld 9 лет назад 0
Я написал «Это», что означало, что я согласен / поддерживаю ваш ответ. Затем я написал «Я никогда не открываю файлы CSV напрямую», ссылаясь на ваше объяснение использования «Импорт» вместо «Открыть». pepoluan 9 лет назад 0
@pepoluan Спасибо. Если бы я понял «это», остальное было бы ясно. Думаю, я старею :-( Ron Rosenfeld 9 лет назад 4
Я надеялся, что использование «этого» в качестве полного предложения умерло бы быстрой смертью, но через 4 года оно стало таким же сильным, как и всегда. variant 5 лет назад 0
2
HardScale

Start the cell with an apostrophe to force text interpretation:

'0502E000 

Basically, this tells Excel not to parse the field as a number. Because there is an 'E' in the field, it looks like a number to Excel. The apostrophe won't actually be entered into the cell:

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

Cell 'b1' will display 84074496.

Это работает при вводе непосредственно в Excel, но не с файлом CSV. SBF 6 лет назад 1
-1
Shmuel Wolfson

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

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

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

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