Evolcom.ru

Бытовая техника
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как предотвратить или прекратить преобразование текстовой строки в число в Excel?

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

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

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

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

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

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

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

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

Преобразуйте его в… :

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

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

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

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

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

Читайте так же:
Как предотвратить изменение всей книги?

В ячейке «b1» появится 84074496.

Попробуйте загрузить файл (данные, извлеченные из таблицы базы данных) через опцию DATA в MS Excel, затем просто выберите «Do not define data types» в «Data type discovery» при загрузке, затем загрузите, это сохранит формат данных и загрузит Excel, не нужно преобразовывать столбцы.

Вставьте данные в электронную таблицу Google. Выберите Column ==> Format ==> Number => Custom Format => Введите количество цифр, для которых нужен формат (например, 10 цифр = 000000000000).

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

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

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

У меня сработало, если сделать специальную вставку и поместить число как текст. В этом случае ячейка остается с форматированием текста, а число остается неизменным.

Преобразование ТЕКСТовых значений в ЧИСЛА (Часть 3. Неразрывный пробел в EXCEL)

Нередко приходится копировать число из WORD в EXCEL. Чтобы избежать нежелательных битовых сдвигов, числа в WORD часто разделяются пробелом (1,234,478.33). Из-за этого числа, скопированные из WORD, приобретают текстовый формат (без учета формата ячеек), от которого нелегко избавиться.

Если взять 1 234 478,33 из WORD в EXCEL, то там 32 бита, разделенные обычными пробелами (код символа 32). Копируя это число через буфер обмена в ячейку с форматом General , мы получим в ячейке число, а формат ячейки изменится на Numeric. Т.е. в EXCEL при вставке значения используется следующее правило: если вставляемое значение можно преобразовать в число, то вставьте его как число и измените формат ячейки на Числовой (если биты разделены пробелами) или оставьте формат Общий (если биты не разделены пробелами). Слова «вставить как число» могут означать, что пробелы должны быть удалены.

Читайте так же:
Как подсчитать уникальные / повторяющиеся даты в столбце Excel?

Если цифры числа разделены неразрывными пробелами (символьный код 160), то у EXCEL нет «правила» для этого случая — после вставки мы получим текстовое значение, с которым нельзя производить вычисления. EXCEL не может преобразовывать значения, состоящие из чисел и текстовых символов (за исключением пробелов, переносов строк, табуляции и символов абзаца). Это эквивалентно ожиданию того, что 11Sh555.00 будут автоматически конвертированы в 11555.00.

Давайте решим эту проблему сейчас. Приемы, упомянутые в части 1 «Преобразование с помощью шаблонов» и части 2 «Преобразование буфера обмена», здесь не подойдут. Вы можете либо удалить символ неразрывного пробела изначально в WORD, например, заменив его на пробел (используя CTRL+F), либо сделать это в EXCEL после вставки.

  • В EXCEL выберите диапазон ячеек, который содержит значения, импортированные из WORD;
  • Используйте стандартную команду Найти…. ( Пуск/Редактирование/Определить и выбрать/Найти… или нажмите CTRL+F );
  • Откройте вкладку Заменить;
  • Введите код неразрывного пробела в поле Найти (визуально этот символ ничем не отличается от обычного пробела). Для этого удерживайте нажатой клавишу ALT на цифровой клавиатуре (справа, где находится клавиша NumLock) и введите 0160. Подробнее об этом вы можете прочитать в статье Ввод символов с помощью клавиши ALT .
  • Поле «Заменить на» должно быть пустым;
  • Нажмите «Заменить все».

Цифры преобразуются из текстового в числовой формат.

Помимо формул, для достижения этой цели можно использовать функцию SUBSTITUTE(). =SUBSTITUTE(A1;SYMBOL(160);»»)))

Обработка исключений

Во время выполнения программы могут возникнуть ошибки, которые трудно предсказать или предвидеть, а иногда даже невозможно. Если вы передаете файл по сети, соединение может неожиданно прерваться. Язык C# помогает разработчикам справляться с подобными ситуациями. Этой цели служит конструкция try в C#. catch. finally .

При использовании блока try. catch.finally сначала выполняются все инструкции в блоке try. Блок finally выполняется, если в этом блоке нет исключений. Это завершает цель конструкции try.catch.finally.

Читайте так же:
Как посчитать в Excel ячейки с нулями, но не с пробелами?

Если в блоке try возникает исключение, нормальное выполнение останавливается, и среда CLR ищет блок catch, который может обработать исключение. Если блок catch существует, он выполняется, а затем выполняется блок finally.

Если нужный блок захвата не будет найден, программа завершится аварийно, если будет выброшено исключение.

Смотрите, например:

Деление на ноль в этом случае вызовет исключение. И при запуске приложения в режиме отладки мы увидим в Visual Studio окошко, информирующее нас об исключении:

Исключения в C#

Произошло исключение типа System, как показано в этом окне. DivideByZeroException , то есть попытка деления на ноль. Используя элемент View Details, вы можете увидеть более подробную информацию об исключении.

В этом случае единственное, что остается сделать, — это завершить программу.

Для обработки исключений следует использовать конструкцию try, чтобы предотвратить подобные сбои. catch. finally . Итак, давайте перепишем пример следующим образом:

В этом случае мы снова получим исключение в блоке try, потому что мы пытаемся делить на ноль. И когда мы дойдем до линии

Выполнение программы прекращается. CLR должен найти блок захвата и передать управление на этот блок.

После этого следует заключительный блок.

Таким образом, программа по-прежнему не будет выполнять деление на ноль и, следовательно, не будет выводить результат деления, но она не потерпит крах, и исключение будет обработано в блоке catch.

Обратите внимание, что блок try является обязательным в этой конструкции. Если есть блок catch, мы можем пропустить блок finally:

И наоборот, если есть блок finally, мы можем пропустить блок catch и не обрабатывать исключения:

Однако, хотя это и правильно с точки зрения синтаксиса C#, поскольку CLR не может найти блок catch, исключение не будет обработано, и программа завершится аварийно.

Читайте так же:
Как подсчитать количество ячеек с ошибками / ячеек без ошибок в Excel?

Обработка исключений и условные конструкции

Разработчик может предусмотреть ряд исключительных ситуаций. Например, предположим, что в программе есть метод, который принимает строку, преобразует ее в число и вычисляет квадрат этого числа:

Если пользователь передает в метод не число, а строку, содержащую нечисловые символы, программа завершается аварийно. С одной стороны, это ситуация, когда блок try…catch может быть использован для обработки возможной ошибки. Однако гораздо лучше было бы подтвердить конверсию:

Инт. Если преобразование может быть выполнено, метод TryParse() возвращает true, в противном случае — false. Неправильные преобразования приведут к тому, что значение x будет числовым. Таким образом, без использования try. catch вы можете обработать возможную исключительную ситуацию.

С точки зрения производительности, использование блоков try…catch обходится дороже, чем использование условных конструкций. Поэтому, если это возможно, лучше использовать условные конструкции для контроля исключительных ситуаций вместо try..catch.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector