Очень часто можно столкнуться с такой проблемой: когда вы вставляете в ячейки Excel числа, в которых в качестве десятичного разделителя используется точка, то некоторые такие числа Excel преобразовывает в даты, а другие визуально похожи на те же числа, но на самом деле являются текстом, с которым невозможно работать в дальнейшем как с числами.
Причины этого:
В данном примере (выше) поврежденные данные:
Исходные данные сохранились как текст:
Исходные данные были преобразованы в даты (и, соответственно, утеряны):
Какие есть способы решения данной проблемы?
Начнем с самых кардинальных и, соответственно, не самых лучших.
Да, но такое глобальное изменение повлияет и на работу других приложений и служб (не только Excel).
Тогда мы избавимся от авто преобразования «чисел», похожих на даты, в непосредственно даты, и получим значения в исходном виде, только в формате текста. Далее этот текст легко будет преобразовать в числа с помощью простой формулы:
=SUBSTITUTE(A3;".";",")*1 (в диапазоне C3:C9)
либо еще лучше, формулы:
=NUMBERVALUE(A3;".") (в диапазоне E3:E9)
Русские варианты этих формул:
=ПОДСТАВИТЬ(A3;".";",")*1
и
=ЧЗНАЧ(A3;"."),
соответственно
Можно попробовать восстановить уже испорченные числа формулой
Формула в ячейке 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 Евгений Довженко