Исправление чисел, превратившихся в даты
При импорте в Excel данных из внешних программ, иногда возникает весьма неприятная проблема — дробные числа превращаются в даты:
Так обычно происходит, если региональные настройки внешней программы не совпадают с региональными настройками Windows и Excel. Например, вы загружаете данные с американского сайта или европейской учётной системы (где между целой и дробной частью — точка), а в Excel у вас российские настройки (где между целой и дробной частью — запятая, а точка используется как разделитель в дате).
При импорте Excel, как положено, пытается распознать тип входных данных и следует простой логике — если что-то содержит точку (т.е. российский разделитель дат) и похоже на дату — оно будет конвертировано в дату. Всё, что на дату не похоже — останется текстом.
Давайте рассмотрим все возможные сценарии на примере испорченных данных на картинке выше:
- В ячейке A1 исходное число 153.4182 осталось текстом, т.к. на дату совсем не похоже (не бывает 153-го месяца)
- В ячейке A2 число 5.1067 тоже осталось текстом, т.к. в Excel не может быть даты мая 1067 года — самая ранняя дата, с которой может работать Excel — 1 января 1900 г.
- А вот в ячейке А3 изначально было число 5.1987, которое на дату как раз очень похоже, поэтому Excel превратил его в 1 мая 1987, услужливо добавив единичку в качестве дня:
- То же самое случилось и в ячейке А4, где изначально было число 12.6923. Причем 6923-й год Excel тут нисколько не смутил — для него главное, чтобы дата была не раньше 1900 года. Так что добро пожаловать в далекое будущее:
- Единственное, что распознаётся корректно — это числа без дробной части (число 1000 в ячейке А6). И на том спасибо
Вот такие варианты. И если текстовые числа ещё можно вылечить банальной заменой точки на запятую, то с числами превратившимися в даты такой номер уже не пройдет. А попытка поменять их формат на числовой выведет нам уже не исходные значения, а внутренние коды дат Excel — количество дней от 01.01.1900 до текущей даты:
Лечится вся эта история тремя принципиально разными способами.
Способ 1. Заранее в настройках
Если данные ещё не загружены, то можно заранее установить точку в качестве разделителя целой и дробной части через Файл — Параметры — Дополнительно (File — Options — Advanced):
Снимаем флажок Использовать системные разделители (Use system separators) и вводим точку в поле Разделитель целой и дробной части (Decimal separator).
После этого можно смело импортировать данные — проблем не будет.
Способ 2. Формулой
Если данные уже загружены, то для получения исходных чисел из поврежденной дата-тексто-числовой каши можно использовать простую формулу:
=—ЕСЛИ(ЯЧЕЙКА(«формат»;A1)=»G»; ПОДСТАВИТЬ(A1;».»;»,»); ТЕКСТ(A1;»М,ГГГГ»))
В английской версии это будет:
=—IF(CELL(«format«;A1)=»G»; SUBSTITUTE(A1;».»;»,»); TEXT(A1;»M,YYYY«))
Логика здесь простая:
- Функция ЯЧЕЙКА (CELL) определяет числовой формат исходной ячейки и выдаёт в качестве результата «G» для текста/чисел или «D3» для дат.
- Если в исходной ячейке текст, то выполняем замену точки на запятую с помощью функции ПОДСТАВИТЬ (SUBSTITUTE).
- Если в исходной ячейке дата, то выводим её в формате «номер месяца — запятая — номер года» с помощью функции ТЕКСТ (TEXT).
- Чтобы преобразовать получившееся текстовое значение в полноценное число — выполняем бессмысленную математическую операцию — добавляем два знака минус перед формулой, имитируя двойное умножение на -1.
Способ 3. Макросом
Если подобную процедуру лечения испорченных чисел приходится выполнять часто, то имеет смысл автоматизировать процесс макросом. Для этого жмём сочетание клавиш Alt+F11 или кнопку Visual Basic на вкладке Разработчик (Developer), вставляем в нашу книгу новый пустой модуль через меню Insert — Module и копируем туда такой код:
Sub Fix_Numbers_From_Dates() Dim num As Double, cell As Range For Each cell In Selection If Not IsEmpty(cell) Then If cell.NumberFormat = "General" Then num = CDbl(Replace(cell, ".", ",")) Else num = CDbl(Format(cell, "m,yyyy")) End If cell.Clear cell.Value = num End If Next cell End Sub
Останется выделить проблемные ячейки и запустить созданный макрос сочетанием клавиш Alt+F8 или через команду Макросы на вкладке Разработчик (Developer — Macros). Все испорченные числа будут немедленно исправлены.
Ссылки по теме
- Как Excel на самом деле работает с датами и временем
- Замена текста функцией ПОДСТАВИТЬ
- Функция ВПР и числа-как-текст
Содержание
- Решение проблемы отображения числа как даты
- Способ 1: контекстное меню
- Способ 2: изменение форматирования на ленте
- Вопросы и ответы
Бывают случаи, когда при работе в программе Excel, после занесения числа в ячейку, оно отображается в виде даты. Особенно такая ситуация раздражает, если нужно произвести ввод данных другого типа, а пользователь не знает как это сделать. Давайте разберемся, почему в Экселе вместо чисел отображается дата, а также определим, как исправить эту ситуацию.
Решение проблемы отображения числа как даты
Единственной причиной, почему данные в ячейке могут отображаться как дата, является то, что в ней установлен соответствующий формат. Таким образом, чтобы наладить отображение данных, как ему нужно, пользователь должен его поменять. Сделать это можно сразу несколькими способами.
Способ 1: контекстное меню
Большинство пользователей для решения данной задачи используют контекстное меню.
- Кликаем правой кнопкой мыши по диапазону, в котором нужно сменить формат. В контекстном меню, которое появится после этих действий, выбираем пункт «Формат ячеек…».
- Открывается окно форматирования. Переходим во вкладку «Число», если оно вдруг было открыто в другой вкладке. Нам нужно переключить параметр «Числовые форматы» со значения «Дата» на нужное пользователю. Чаще всего это значения «Общий», «Числовой», «Денежный», «Текстовый», но могут быть и другие. Тут все зависит от конкретной ситуации и предназначения вводимых данных. После того, как переключение параметра выполнено жмем на кнопку «OK».
После этого данные в выделенных ячейках уже не будут отображаться как дата, а станут показываться в нужном для пользователя формате. То есть, будет достигнута поставленная цель.
Способ 2: изменение форматирования на ленте
Второй способ даже проще первого, хотя почему-то менее популярный среди пользователей.
- Выделяем ячейку или диапазон с форматом даты.
- Находясь во вкладке «Главная» в блоке инструментов «Число» открываем специальное поле форматирования. В нём представлены самые популярные форматы. Выбираем тот, который наиболее подходит для конкретных данных.
- Если среди представленного перечня нужный вариант не был найден, то жмите на пункт «Другие числовые форматы…» в этом же списке.
- Открывается точно такое же окно настроек форматирования, как и в предыдущем способе. В нём расположен более широкий перечень возможного изменения данных в ячейке. Соответственно, и дальнейшие действия тоже будут точно такими же, как и при первом варианте решения проблемы. Выбираем нужный пункт и жмем на кнопку «OK».
После этого, формат в выделенных ячейках будет изменен на тот, который вам нужен. Теперь числа в них не будут отображаться в виде даты, а примут заданную пользователем форму.
Как видим, проблема отображения даты в ячейках вместо числа не является особо сложным вопросом. Решить её довольно просто, достаточно всего нескольких кликов мышкой. Если пользователь знает алгоритм действий, то эта процедура становится элементарной. Выполнить её можно двумя способами, но оба они сводятся к изменению формата ячейки с даты на любой другой.
Еще статьи по данной теме:
Помогла ли Вам статья?
Lexus297 |
|
1 |
|
21.09.2009, 12:07. Показов 25840. Ответов 15
Проблемка возникла, когда функцией ‘заменить’ |
0 / 0 / 0 Регистрация: 07.09.2009 Сообщений: 46 |
|
21.09.2009, 16:42 |
2 |
Сделай сперва формат ячейки текстовым.
0 |
Lexus297 |
|
21.09.2009, 18:45 |
3 |
Да я формат ячейки каким только не выстовлял, все равно какая-нить шняга, а самое смешное что не на всех цифрах…. |
0 / 0 / 0 Регистрация: 21.09.2009 Сообщений: 65 |
|
22.09.2009, 06:38 |
4 |
по идее если стоит текстовый формат ячейки а не общий, то он воспринимает как текст и ничего не меняет….
0 |
0 / 0 / 0 Регистрация: 07.09.2009 Сообщений: 46 |
|
22.09.2009, 17:39 |
5 |
Проблема есть. И никакие форматы действительно не спасают. Поэтому вижу выход только один — выполнить замену с помощью макросов, то есть вручную обработать значение ячейки (предварительно конвертировав его в текст), заменяя символ ‘,’ символом ‘.’ . До этого нужно сделать формат ячеек текстовым.
0 |
Lexus297 |
|
22.09.2009, 20:44 |
6 |
Как это сделать? Файл и так после макроса становится нормальным для понимания csvшником, помоги плиз… ну а с меня пиво само собой…, если ты из Москвы |
T@sh 0 / 0 / 0 Регистрация: 21.09.2009 Сообщений: 65 |
||||
23.09.2009, 04:09 |
7 |
|||
Можно что-нить подобное сделать:
но возможно это будет медленно работаь попрбуй
0 |
noemotion 0 / 0 / 0 Регистрация: 07.09.2009 Сообщений: 46 |
||||||||||||
23.09.2009, 17:00 |
8 |
|||||||||||
Я бы предложил такой способ обработки конкретной ячейки.
Думаю должно работать довольно таки быстро. А если у тебя большой масив даных(раз уж мы заговорили о скорости), то для ускорения тебе не обойтись без двух строчек в начале програмы:
и одной сточки в конце программы:
0 |
demonlegion |
|
23.09.2009, 17:40 |
9 |
проще не пеши её а нормально выучи VBA |
Lexus297 |
||||
23.09.2009, 22:46 |
10 |
|||
Спасибо всем все просто супер…
|
0 / 0 / 0 Регистрация: 07.09.2009 Сообщений: 46 |
|
27.09.2009, 12:54 |
11 |
А зачем здесь вводить переменную ‘yacheyka’?
0 |
Lexus297 |
|
27.09.2009, 13:07 |
12 |
Чтобы меньше писать |
0 / 0 / 0 Регистрация: 07.09.2009 Сообщений: 46 |
|
27.09.2009, 13:42 |
13 |
а получается ведь наоборот — лишние переменные + лишние строки….
0 |
greenko |
|
27.09.2009, 14:41 |
14 |
А не проще ли сделать следующим образом: |
usver |
||||
05.10.2009, 12:15 |
15 |
|||
А зачем вообще цикл?
Удачи |
marketolog |
|
05.10.2009, 12:37 |
16 |
Проблема эта известна довольно давно. |
При замене запятой на точку число превращается в дату |
||||||||
Ответить |
||||||||
Ответить |
В работе программы Excel все функционирует в соответствии с прописанными формулами и функциями. Даже из-за одной-единственной точки или запятой вся бухгалтерия может дать сбой. А это значит, что каждому пользователю программы будет полезным узнать, как быстро найти допущенную ошибку и исправить ее.
Содержание
- Процедура замены
- Метод 1: применяем инструмент «Найти и заменить»
- Метод 2: используем функцию «ПОДСТАВИТЬ»
- Метод 3: настраиваем параметры Excel
- Метод 4: используем специальный макрос
- Метод 5: меняем системные настройки компьютера
- Дополнительный метод: замена точки на запятую в Excel через Блокнот
- Заключение
Процедура замены
В русскоязычном варианте Excel для обозначения десятичных дробей используется запятая, а вот в английской программе – точки. Часто такая ошибка возникает вследствие работы на двух языках или из-за недостатка знаний.
Для начала стоит определиться с причинами, по которым возникла необходимость замены запятой на точку. В некоторых случаях это вызвано более привлекательным визуальным отображением, а не функциональными требованиями. Но если требование замены продиктовано необходимостью проведения расчетов, то к выбору метода замены запятых на точки следует отнестись серьезно. В зависимости от целей замены метод будет разный.
Метод 1: применяем инструмент «Найти и заменить»
Одним из самых простых и наиболее известных методов замены запятой на точку является применение инструмента под названием «Найти и заменить». К сожалению, этот способ не подходит в случае функциональных дробей. Во время замены запятой на точку при использовании данного метода значения ячеек будет трансформировано в формат текста. Рассмотрим механизм метода «Найти и заменить»:
- Выделяем конкретный диапазон ячеек, нуждающихся в замене. При нажатии правой клавишей мышки на выделенной области всплывает меню. Здесь выбираем пункт под названием «Формат ячеек». Данную функцию можно вызвать комбинацией на клавиатуре Ctrl+1.
- При активации «Формат ячеек» открывается окно форматирования. В параметре «Число» следует выбрать критерий «Текстовый». Для сохранения внесенных изменений обязательно нужно нажать «ОК». Если просто закрыть окно форматирования, то все изменения утратят свою силу.
- Переходим к следующему шагу. Снова выделяем необходимое количество ячеек. В активной вкладке «Главная» находим блок функций «Редактирование», выбираем «Найти и выделить». В появившемся после этого меню следует активировать параметр «Заменить».
- Далее открывается окно под названием «Найти и заменить» для заполнения двух параметров «Найти» – вносится символ, слово или цифра, а в «Заменить на» следует указать символ, слово или цифру, на который будет произведена замена. Таким образом, в строчке «Найти» будет символ «,», а в строчке «Заменить на» – «.».
- После заполнения параметров нажимаем «Заменить все». После чего появится небольшое сообщение о количестве произведенных замен. Нажимаем «ОК».
Данный метод позволяет заменить все запятые на точки в выбранной области ячеек. Процедура несложная и быстро выполнимая. Минусом такого способа является замена формата на текстовый, что исключает в дальнейшем проведение каких-либо расчетов.
Метод 2: используем функцию «ПОДСТАВИТЬ»
Метод основан на использовании соответствующей одноименной функции. При выборе этого способа необходимо преобразовать данные ячеек, а потом, скопировав их, вставить на место исходных данных.
- Выделив пустую ячейку, рядом с ячейкой, которая подлежит изменениям. Активируем «Вставить функцию» – символ в строчке функций «fx».
- В появившемся окошке с доступными функциями находим подраздел «Текстовые». Выбираем формулу под названием «Подставить» и сохраняем выбор нажатием кнопки «ОК».
- Появляется окно для заполнения обязательных к заполнению параметров – «Текст», «Старый текст» и «Новый текст». Параметр «Текст» предполагает внесение адреса ячейки с исходным значением. Строчка «Старый текст» предназначена для указания символа, подлежащего замене, то есть «,», а в параметр «Новый текст» вносим «.». Когда все параметры заполнены, нажимает «ОК». В активной ячейке появится такая надпись =ПОДСТАВИТЬ (С4; “,”; ”.”).
- В результате значение ячейки изменено успешно. Данные манипуляции следует повторить для всех остальных ячеек.
- У данного метода также есть существенный минус. Если замене подлежит всего несколько значений, то повтор действий не займет много времени. Но как быть в случае необходимости изменения довольно большого массива данных. Можно, например, использовать маркер заполнения ячеек.
- Для реализации этого пункта необходимо установить указатель курсора в правый нижний угол активной ячейки с уже введенной функцией. При этом появится крестик – так называемый маркер заполнения. Нажав на левую клавишу мышки, следует перетянуть этот крестик вдоль столбца со значениями, которые нуждаются в изменении.
- В результате в выделенном столбике появятся уже измененные значения – вместо запятых в десятичных дробях теперь появились точки. Теперь необходимо все полученные трансформированные значения скопировать и перенести в ячейки исходных цифр. Выделяем измененные ячейки. Нажимаем кнопку «Копировать» в «Главной» вкладке.
- При нажатии правой кнопкой компьютерной мышки по выделенным ячейкам появляется меню с категорией «Параметры вставки», находим и выбираем параметр «Значения». Схематически этот пункт отображен в виде кнопки «123».
- Значения с изменениями будут перемещены в соответствующие ячейки. Для удаления ненужных значений в этом же меню выбираем категорию «Очистить содержимое».
Таким образом, замена запятых на место точек в выбранной области значений осуществлена, а ненужные значения удалены.
Метод 3: настраиваем параметры Excel
Путем настройки некоторых параметров программы Excel также можно добиться замены символа «,» на «.». При этом формат ячеек останется числовым, а не поменяется на текстовый.
- Активировав вкладку «Файл», выбираем блок «Параметры».
- Следует перейти в категорию «Дополнительно» и найти «Параметры правки». Возле критерия «Использовать системные разделители» снимаем флажок. В строчке «Разделитель целой и дробной части» меняем точку, которая стоит по умолчанию, на запятую.
После внесенных изменений в программных настройках Excel разделительным знаком для обозначения дробей теперь является точка.
Метод 4: используем специальный макрос
Еще один метод подмены точками запятых в Excel предполагает применение макросов. Но прежде чем их использовать, следует учитывать тот момент, что в программе макросы отключены по умолчанию. Значит для начала работы необходимо включить вкладку «Разработчик» и активировать макросы.
Режим «Разработчик» включается через параметры программы. В подразделе под названием «Настроить ленту», далее в категории «Основные вкладки» находим пункт «Разработчик», напротив которого ставим галочку. Активируются настройки после нажатия кнопки «ОК».
- Вкладка «Разработчик» → блок «Код», нажимаем кнопку под названием «Visual Basic».
- Откроется окошко редактора макросов. В этом окне нужно ввести следующий программный код:
На этом этапе завершаем работу в редакторе, просто закрыв окно редактора.
- Выбираем ячейки, в которых будут проведены изменения. Нажимает кнопку «Макросы», которая находится в блоке инструментов.
- При этом появляется окно с указанием имеющихся макросов. Выбираем недавно созданный макрос. Выделив макрос, нажимаем «Выполнить» для его активации.
- Замена выполнена – вместо запятых появились точки.
Применение этого метода требует особого внимания. После активации макроса вернуть все обратно уже нельзя. При выделении ячеек с определенными значениями нужно удостовериться в том, что изменения будут произведены только с теми данными, которые действительно в этом нуждаются.
Метод 5: меняем системные настройки компьютера
Этот способ не слишком распространен, тем не менее он тоже используется для замены запятых точками при выполнении расчетов в документах Excel. Будем менять настройки непосредственно в программном обеспечении. Рассмотрим этот процесс на примере ПО Windows 10 Pro.
- Отправляемся в «Панель управления», которую можно вызвать через «Пуск».
- В категории «Время и язык» выбираем параметр «Регион».
- После этого откроется окошко. Здесь активируем «Дополнительные параметры даты, времени, региона».
- Откроется новое окошко, в котором переходим на «Региональные стандарты».
- Теперь переходим во вкладку «Форматы» и внизу окошка активируем «Дополнительные параметры…».
- Далее в категории «Числа» указываем необходимый символ разделителя в строчке «Разделитель целой и дробной части». После внесенных изменений нажимаем «ОК».
В результате нашей работы запятые в ячейках-полях таблиц Excel, заполненных числовыми значениями, будут автоматически трансформироваться в точки. В данном случае формат ячейки не имеет значения, будь то «Общий» либо «Числовой».
Важно! Во время переноса файла на другой компьютер со стандартными настройка могут появиться проблемы с процессом вычислений.
Дополнительный метод: замена точки на запятую в Excel через Блокнот
В программном обеспечении Windows есть программка «Блокнот», которая функционирует на основе минимального количества функций, настроек. «Блокнотом» можно воспользоваться в качестве посредника для копирования, предварительного просмотра данных.
- Нужно выделить необходимый диапазон ячеек и скопировать его. Открываем «Блокнот» и вставляем скопированные значения в открывшееся окно.
- Во вкладке «Правка» выбираем категорию «Заменить». В качестве горячих клавиш используется комбинация «CTRL+H». Появляется окошко, в котором заполняем поля. В строчку «Что» вводим «,», в строчку «Чем» – «.». Когда поля заполнены, кликаем «Заменить все».
После данных манипуляций во вставленном тексте все запятые трансформировались в точки. Теперь осталось лишь еще раз скопировать измененные дробные значения и вставить их в таблицу документа Excel.
Заключение
В статье были рассмотрены самые эффективные и популярные методы осуществления замены символа запятой в десятичных дробях на точки в таблицах Excel. Чаще всего пользователи отдают предпочтение встроенному инструменту «Найти и заменить» для визуально привлекательного вида числовых значений, а для проведения вычислений применяется функция «ПОДСТАВИТЬ».
Оцените качество статьи. Нам важно ваше мнение: