Как сделать так чтобы эксель не менял числа на дату
Очень часто можно столкнуться с такой проблемой: когда вы вставляете в ячейки Excel числа, в которых в качестве десятичного разделителя используется точка, то некоторые такие числа Excel преобразовывает в даты, а другие визуально похожи на те же числа, но на самом деле являются текстом, с которым невозможно работать в дальнейшем как с числами.
- Несоответствие регионального формата исходных данных региональным настройкам вашей операционной системы. В исходных данных в качестве десятичного разделителя используется точка (американский формат), а у вас – региональные настройки, в которых десятичным разделителем является запятая, а точка воспринимается как разделитель отдельных составляющих даты – день, месяц, год (например, 17.09.202.
- Особое поведение Excel для ячеек в «Общем» числовом формате (который установлен по умолчанию): если вводить в ячейку что-то похожее на число, то такое значение сохраняется как число, если вводить что-либо, похожее на дату – то такое значение сохраняется как дата. Если вводимое значение не похоже ни на число, ни на дату – то это текст.
В данном примере (выше) поврежденные данные:
Исходные данные сохранились как текст:
- Ячейка D3 – исходное значение (179.3287) мало похоже на дату, так как номер месяца 179 не существует (а вот год 3287 возможен, в далеком будущем).
- Ячейка D4 – исходное значение похоже на дату (июль 1275 года). Однако в Excel точкой отсчета дат является 1 января 1900 года. Поэтому число 1275 (ранее 1900 года) не воспринимается как год.
Исходные данные были преобразованы в даты (и, соответственно, утеряны):
- Ячейка D5 – в исходном значении (7.1972) число до точки похоже на номер месяца 7 (июль), а число после точки – на год 1972 (на самом деле произошло преобразование в дату 01.07.1972)
- Ячейка D6 – в исходном значении (11.2024) число до точки воспринимается как номер месяца (ноябрь), а после точки – год 2024 (произошло преобразование в дату 01.11.2024)
Какие есть способы решения данной проблемы?
Начнем с самых кардинальных и, соответственно, не самых лучших.
Способ-1. Поменять региональные настройки операционной системы (на американские).
Да, но такое глобальное изменение повлияет и на работу других приложений и служб (не только Excel).
Способ-2. Локально в Excel (в параметрах Excel) заблаговременно изменить десятичный разделитель с запятой на точку:
Способ-3. Заблаговременно установить «текстовый» формат ячеек (вместо «общего»), в которые будут вставляться значения.
Тогда мы избавимся от авто преобразования «чисел», похожих на даты, в непосредственно даты, и получим значения в исходном виде, только в формате текста. Далее этот текст легко будет преобразовать в числа с помощью простой формулы:
=SUBSTITUTE(A3;».»;»,»)*1 (в диапазоне C3:C9)
либо еще лучше, формулы:
=NUMBERVALUE(A3;».») (в диапазоне E3:E9)
Русские варианты этих формул:
Способ-4. Формулой (без какой-либо предварительной подготовки):
Можно попробовать восстановить уже испорченные числа формулой
Формула в ячейке G3:
=1*IF(CELL(«format»;D3)=»G»; SUBSTITUTE(D3;».»;»,»); TEXT(D3;»M,YYYY»))
или русский вариант:
=1*ЕСЛИ(ЯЧЕЙКА(«формат»;D3)=»G«; ПОДСТАВИТЬ(D3;».»;»,»); ТЕКСТ(D3;»М,ГГГГ»))
Формула работает следующим образом:
CELL() (ЯЧЕЙКА()) – функция из категории «Информационные». Если первый ее аргумент (тип информации) указан “format”, то результат работы функции — «G» — для текста или чисел и «D3» — для дат.
Если в ячейке находится текст, то функция SUBSTITUTE() (ПОДСТАВИТЬ()) заменяет точку на запятую и умножение на 1 в начале формулы (применение арифметической операции) приводит к преобразованию текста, состоящего из цифр с запятой, — в число.
Если в ячейке не текст (а дата), то функция TEXT() (ТЕКСТ()) преобразует дату в текст в соответствии с кодом формата, указанного в качестве второго ее аргумента. И далее такой текст легко преобразуется в число путем умножения на 1 (в начале формулы).
Используя код формата в функции TEXT, нужно учитывать то, что и даже в англоязычной версии, в зависимости от региональных настроек, вместо “M,YYYY”, возможно, нужно указывать “М,ГГГГ” (где “M” – кириллическое).
ВАЖНО! Формула не является универсальным решением (на все случаи жизни)
Она хорошо работает, если после точки находится от 3-х и более цифр.
А что, если имеем такое:
В первых трех ячейках уже цифры до точки воспринимаются как номер дня (а не номер месяца), а цифры после точки – как номер месяца (а не номер года).
А в последних двух ячейках разные исходные числа привели к получению одной и той же даты.
Если в первом случае можно было бы еще добавить проверку дополнительных условий в формуле, то в последнем – исходные значения безвозвратно утеряны и узнать какие они были – уже не представляется возможным. Очевидно, в таком случае, единственный вариант – это не допустить автоматического преобразования «как бы чисел» в даты, то есть указанный выше способ 3 – чуть ли не единственное решение (не считая кардинальных изменений региональных настроек).
Такие и подобные тонкости работы в Excel мы прорабатываем на курсе «Excel бизнес-анализ и прогнозирование»
За 27 часов изучения Excel у вас не останется никаких вопросов его работе, а если они и возникнут, то наши тренера-поддержки онлайн помогут с ответами.
Автор статьи CEO и тренер DATAbi Евгений Довженко
Отмена автоматической замены чисел датами
Microsoft Excel предварительно запрограммирован, чтобы упростить ввод дат. Например, 12/2 изменяется на 2 декабря. Это очень разочаровывает, когда вы вводите то, что вы не хотите изменить до даты. К сожалению, нет способа отключить это. Но есть способы обойти его.
Преформатировать ячейки, в которые нужно ввести числа, в виде текста. Таким образом, Excel не будет пытаться изменить то, что вы вводите в даты.
Если у вас есть только несколько чисел для ввода, вы можете остановить их изменение в Excel на даты, введя:
- Пробел перед вводом числа. Пробел остается в ячейке после нажатия клавиши ВВОД. (См. примечания)
- Апостроф (‘) перед вводом числа, например ’11-53 или ‘1/47. После нажатия клавиши ВВОД апостроф не отображается в ячейке.
- Ноль и пробел перед вводом дроби, например 1/2 или 3/4, чтобы они не изменялись, например, на 2 января или 4 марта. Введите 0 1/2 или 0 3/4. Ноль не остается в ячейке после нажатия клавиши ВВОД, а ячейка становится типом Номер дроби.
- Выберите ячейки , в которые будут вводиться числа.
- Нажмите клавиши CTRL+1 (1 в строке чисел над клавишами QWERTY), чтобы открыть формат ячеек.
- Выберите Текст и нажмите кнопку ОК.
- Выберите ячейки, в которые необходимо ввести числа.
- Щелкните Главная >Числовой формат >Текст.
- Мы рекомендуем использовать апостроф вместо пробела для ввода данных, если вы планируете использовать функции подстановки для данных. Такие функции, как ПОИСКПОЗ и ВПР, не учитывают апострофы при вычислении результатов.
- Если число в ячейке выровнено по левому краю, обычно это означает, что оно не отформатировано как число.
- При введении в ячейку числа с буквой «е», например 1e9, оно автоматически преобразуется в научное число: 1,00E+09. Чтобы избежать этого, введите перед числом апостроф: ‘1e9
- В зависимости от введенного числа в левом верхнем углу ячейки может появиться небольшой зеленый треугольник, указывающий, что число хранится в виде текста, что в Excel является ошибкой. Либо игнорируйте треугольник, либо щелкните его. Слева появится поле. Щелкните поле и выберите Игнорировать ошибку, чтобы удалить треугольник.
Дополнительные сведения
Вы всегда можете задать вопрос эксперту в Excel Tech Community или получить поддержку в сообществах.
Отмена автоматического форматирования в Excel
Иногда при вводе данных на Excel форматирование происходит автоматически. Например, если ввести веб-адрес, Excel превратит его в гиперссылки. Это может быть очень полезным, но иногда это совсем не нужно. В этом случае можно отключить автоматическое форматирование для одной ячейки или для всей книги.
- Наводите указатель мыши на текст, который был отформатирован автоматически, и нажмите кнопку Параметры автоcorrect. Эта кнопка очень маленькая, поэтому внимательно посмотрите на нее при нажатии указателя мыши.
- Чтобы удалить форматирование только для выбранного текста, нажмите кнопку Отменить. Например, если Excel гиперссылка создана автоматически и вы хотите ее удалить, нажмите кнопку Отменить гиперссылки.
- Чтобы Excel прекратить применение форматирования этого типа к книге, нажмите кнопку Остановить. Например, если Excel создать гиперссылки автоматически и вы хотите запретить Excel делать это для остальной части таблицы, нажмите кнопку Прекратить автоматическое создание гиперссылки.
Одновременное настройка всех параметров автоматического форматирования
Если вы хотите одновременно просмотреть и изменить параметры автоматического форматирования, это можно сделать в диалоговом окне Автоcorrect.
- Выберите Файл >Параметры.
- В окне Excel параметры выберите параметры > проверки >проверки.
- На вкладке Автоформат при типе заведите флажки для автоматического форматирования, которые вы хотите использовать.
- Интернет и сетевые пути гиперссылкой. Заменяет введите URL-адреса, сетевые пути и адреса электронной почты гиперссылкой.
- Включать в таблицу новые строки и столбцы. При вводе данных под или рядом с Excel таблица расширяется, включая в нее новые данные. Например, если таблица в столбцах A и B ввести данные в столбец C, Excel автоматически отформатируется как часть таблицы.
- Заполнение таблиц формул для создания вычисляемых столбцов. Применяет одну формулу ко всем ячейкам в Excel таблицы.
Примечание: Если вы хотите настроить датыи числа, это можно сделать на вкладке Главнаяв группе Число. Оно не является частью автоматического форматирования.
Эта функция недоступна в Excel в Интернете.
Если у вас есть Excel, вы можете нажать кнопку Открыть в Excel, чтобы открыть книгу и отменить автоматическое форматирование.
Дополнительные сведения
Вы всегда можете задать вопрос эксперту в Excel Tech Community или получить поддержку в сообществах.
Исправление чисел, превратившихся в даты
При импорте в Excel данных из внешних программ, иногда возникает весьма неприятная проблема — дробные числа превращаются в даты:
Так обычно происходит, если региональные настройки внешней программы не совпадают с региональными настройками Windows и Excel. Например, вы загружаете данные с американского сайта или европейской учётной системы (где между целой и дробной частью — точка), а в Excel у вас российские настройки (где между целой и дробной частью — запятая, а точка используется как разделитель в дате).
При импорте Excel, как положено, пытается распознать тип входных данных и следует простой логике — если что-то содержит точку (т.е. российский разделитель дат) и похоже на дату — оно будет конвертировано в дату. Всё, что на дату не похоже — останется текстом. Давайте рассмотрим все возможные сценарии на примере испорченных данных на картинке выше:
- В ячейке A1 исходное число 153.4182 осталось текстом, т.к. на дату совсем не похоже (не бывает 153-го месяца)
- В ячейке A2 число 5.1067 тоже осталось текстом, т.к. в Excel не может быть даты мая 1067 года — самая ранняя дата, с которой может работать Excel — 1 января 1900 г.
- А вот в ячейке А3 изначально было число 5.1987, которое на дату как раз очень похоже, поэтому Excel превратил его в 1 мая 1987, услужливо добавив единичку в качестве дня:
Вот такие варианты. И если текстовые числа ещё можно вылечить банальной заменой точки на запятую, то с числами превратившимися в даты такой номер уже не пройдет. А попытка поменять их формат на числовой выведет нам уже не исходные значения, а внутренние коды дат 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 на самом деле работает с датами и временем
- Замена текста функцией ПОДСТАВИТЬ
- Функция ВПР и числа-как-текст