Дуже часто можна зіткнутися з такою проблемою: коли ви вставляєте в комірки Excel числа, в яких як десятковий роздільник використовується точка, то деякі такі числа Excel перетворює в дати, а інші візуально схожі на ті ж числа, але насправді є текстом, з яким неможливо працювати надалі як із числами.
Причини цього:
1. Невідповідність регіонального формату вихідних даних регіональним параметрам вашої операційної системи. У вихідних даних як десятковий роздільник використовується точка (американський формат), а у вас – регіональні налаштування, в яких десятковим роздільником є кома, а точка сприймається як роздільник окремих складових дати – день, місяць, рік (наприклад, 17.09.202).
2. Особлива поведінка 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 Євген Довженко