Индивидуальный идентификационный номер (ИИН) в Казахстане — это не просто набор цифр, а зашифрованная информация о человеке, включая его дату рождения. Если вам нужно автоматически извлечь эту дату из сотен или тысяч ИИН в Excel, ручной ввод отнимет часы. К счастью, с помощью формул и функций Microsoft Excel или Google Таблиц можно решить эту задачу за минуты.
Но здесь есть подводные камни: неверный формат ячеек, ошибки в структуре ИИН или особенности региональных стандартов могут привести к некорректным результатам. В этой статье мы разберём точные формулы для извлечения даты рождения из ИИН, научимся проверять корректность данных и автоматизируем процесс для больших массивов. А ещё вы узнаете, как адаптировать эти методы для аналогичных идентификаторов в других странах (например, ИНН в России или EMBG в Северной Македонии).
Если вы работаете с базой клиентов, сотрудников или студентов, где ИИН — единственный доступный идентификатор, умение быстро декодировать дату рождения сэкономит вам время и исключит ошибки. Но прежде чем приступать к формулам, важно понять, как именно зашифрована дата в этих 12 цифрах.
Структура ИИН: где скрыта дата рождения?
Казахстанский ИИН состоит из 12 цифр, где первые 6 символов кодируют дату рождения в формате ГГММДД. Например, в ИИН 950714350123 зашифрована дата 14 июля 1995 года. Но есть нюансы:
- 📅 Вековые приставки: для людей, родившихся в XX веке, первые две цифры — это год рождения (например,
95= 1995). Для XXI века используется приставка0(например,010714...= 14 июля 2001 года). - ⚠️ Исключения: ИИН, выданные до 1996 года, могут иметь другой формат (7 цифр). Такие случаи требуют ручной обработки.
- 🔢 Контрольная цифра: последняя (12-я) цифра ИИН — это проверочный код, который можно использовать для валидации номера.
В Excel дату из ИИН можно извлечь с помощью текстовых функций, но сначала нужно учесть век. Например, ИИН 030520350123 расшифровывается как 20 мая 2003 года, а не 1903-го. Если не учесть эту особенность, формулы дадут неверный результат.
Базовая формула для извлечения даты из ИИН
Самый простой способ получить дату рождения — использовать комбинацию функций ДАТА(), ЛЕВСИМВ() и ПСТР(). Предположим, что ИИН записан в ячейке A2. Формула будет такой:
=ДАТА(
ЕСЛИ(ЛЕВСИМВ(A2;1)="0"; 2000; 1900) + ЛЕВСИМВ(A2;2);
ПСТР(A2;3;2);
ПСТР(A2;5;2)
)
Разберём пошагово:
ЛЕВСИМВ(A2;2)— извлекает первые две цифры (год).ЕСЛИ(ЛЕВСИМВ(A2;1)="0"; 2000; 1900)— определяет век: если первая цифра0, то это XXI век (прибавляем 2000), иначе XX век (прибавляем 1900).ПСТР(A2;3;2)иПСТР(A2;5;2)— извлекают месяц и день соответственно.
Результат формулы — дата в формате Excel, которую можно отформатировать как ДД.ММ.ГГГГ через Формат ячеек.
ИИН записан как текст (не число)|
Первые 6 цифр соответствуют формату ГГММДД|
Нет пробелов или тире в ИИН|
Ячейка с формулой отформатирована как дата-->
Продвинутая формула с проверкой корректности ИИН
Чтобы избежать ошибок из-за опечаток в ИИН, добавьте проверку контрольной цифры. Полный алгоритм валидации ИИН описан в нормативных документах РК, но мы упростим его для Excel.
Формула для проверки (для ячейки A2):
=ЕСЛИ(
И(
ДЛСТР(A2)=12;
--ПСТР(A2;12;1)=МОД(
СУММПРОИЗВ(--ПСТР(A2;{1;2;3;4;5;6;7;8;9;10;11};1);{1;2;3;4;5;6;7;8;9;10;11});
11
);
--ПСТР(A2;12;1)<>10
);
"ИИН корректен";
"Ошибка в ИИН"
)
Если ИИН прошёл проверку, используйте формулу из предыдущего раздела. Если нет — ячейка будет содержать текст
Контрольная цифра (12-я) рассчитывается по специальному алгоритму на основе первых 11 цифр ИИН. Она помогает выявить опечатки (например, переставленные цифры или ошибки в одной цифре). Без проверки вы рискуете получить неверную дату рождения из-за некорректного ИИН."Ошибка в ИИН".
Почему контрольная цифра важна?
Ошибки и их решения: почему формула не работает?
Даже с правильной формулой вы можете столкнуться с проблемами. Вот типичные ошибки и способы их исправления:
| Ошибка | Причина | Решение |
|---|---|---|
#ЗНАЧ! |
ИИН записан как число, а не текст | Измените формат ячейки на Текстовый или добавьте апостроф перед ИИН: '950714350123 |
| Неверный год (например, 2095 вместо 1995) | Формула не учитывает век | Добавьте условие ЕСЛИ(ЛЕВСИМВ(A2;1)="0"; 2000; 1900) (см. раздел 2) |
#ЧИСЛО! в дате |
Некорректная дата (например, 31 февраля) | Проверьте ИИН на валидность (см. раздел 3) или исправьте опечатку |
| Дата отображается как число (например, 44321) | Неверный формат ячейки | Выделите ячейку → Формат ячеек → Дата → выберите формат ДД.ММ.ГГГГ |
⚠️ Внимание: Если в вашей базе есть ИИН старого образца (7 цифр), их нужно обрабатывать отдельно. Для таких случаев используйте формулу:=ДАТА(1900 + ЛЕВСИМВ(A2;2); ПСТР(A2;3;2); ПСТР(A2;5;2))Но помните, что эти ИИН выдавались до 1996 года и могут содержать неточности в дате.
Автоматизация для больших массивов данных
Если у вас тысячи ИИН, ручное применение формул неэффективно. Вот как автоматизировать процесс:
- Создайте пользовательскую функцию (UDF) на VBA:
Откройте редактор VBA (
Alt + F11), вставьте новый модуль и добавьте код:Function GetBirthDateFromIIN(iin As String) As DateDim yearPart As String, monthPart As String, dayPart As String
Dim fullYear As Integer
If Len(iin) <> 12 Then
GetBirthDateFromIIN = CVErr(xlErrValue) ' Ошибка, если длина не 12
Exit Function
End If
yearPart = Left(iin, 2)
monthPart = Mid(iin, 3, 2)
dayPart = Mid(iin, 5, 2)
If Left(iin, 1) = "0" Then
fullYear = 2000 + CInt(yearPart)
Else
fullYear = 1900 + CInt(yearPart)
End If
GetBirthDateFromIIN = DateSerial(fullYear, CInt(monthPart), CInt(dayPart))
End Function
Теперь в Excel можно использовать
=GetBirthDateFromIIN(A2). - Используйте Power Query:
Импортируйте данные в
Power Query(Данные → Получить данные → Из таблицы/диапазона) и добавьте столбец с формулой:= try Date.FromText("19" & Text.Start([IIN], 2) & "-" & Text.Middle([IIN], 2, 2) & "-" & Text.Middle([IIN], 4, 2)) otherwise Date.FromText("20" & Text.Start([IIN], 2) & "-" & Text.Middle([IIN], 2, 2) & "-" & Text.Middle([IIN], 4, 2))
Критическая особенность: при работе с Power Query обязательно проверьте региональные настройки даты. Если в системе установлен формат ММ/ДД/ГГГГ, а не ДД.ММ.ГГГГ, формула может дать сбой.
=ЕСЛИ(ЧЁТН(ПСТР(A2;11;1)); "Женский"; "Мужской")-->
Адаптация для других стран: ИНН, EMBG, JMBG
Принцип извлечения даты из идентификационных номеров схож в разных странах, но структура отличается. Вот примеры для других систем:
- 🇷🇺 ИНН (Россия): Дата рождения не зашифрована в ИНН физического лица (12 цифр). Для её извлечения нужны дополнительные данные.
- 🇲🇰 EMBG (Северная Македония): Формат
ДДММГГР, гдеР— региональный код. Формула:=ДАТА(2000 + ПСТР(A2;5;2); ПСТР(A2;3;2); ПСТР(A2;1;2)) - 🇷🇸 JMBG (Сербия): Формат
ДДММГГГ(7 цифр для даты). Формула:=ДАТА(ПСТР(A2;4;3) + 1000; ПСТР(A2;2;2); ПСТР(A2;1;2))
⚠️ Внимание: В некоторых странах (например, в Сербии) идентификационные номера могут содержать дополнительные проверочные цифры или региональные коды. Всегда уточняйте актуальную структуру номера перед обработкой.
Практические примеры: от теории к применению
Рассмотрим реальные кейсы, где извлечение даты из ИИН может быть полезно:
- HR-аналитика: Создание отчётов по возрастному составу сотрудников без ручного ввода дат рождения.
- Банковские системы: Автоматическая проверка возраста клиента при выдаче кредита (например, для лиц старше 21 года).
- Образовательные учреждения: Формирование списков студентов по году рождения для распределения по курсам.
Пример формулы для определения возраста на сегодняшний день (если дата рождения в ячейке B2):
=ЦЕЛОЕ((СЕГОДНЯ()-B2)/365,25)
Или для проверки совершеннолетия:
=ЕСЛИ((СЕГОДНЯ()-B2)/365,25 >= 18; "Совершеннолетний"; "Несовершеннолетний")
FAQ: Частые вопросы по работе с ИИН в Excel
Можно ли извлечь дату рождения из ИИН, если он записан в формате с тире (например, 95-0714-350123)?
Да, но сначала нужно удалить тире. Используйте функцию ПОДСТАВИТЬ():
=ДАТА(
ЕСЛИ(ЛЕВСИМВ(ПОДСТАВИТЬ(A2;"-";"");1)="0"; 2000; 1900) + ЛЕВСИМВ(ПОДСТАВИТЬ(A2;"-";"");2);
ПСТР(ПОДСТАВИТЬ(A2;"-";"");3;2);
ПСТР(ПОДСТАВИТЬ(A2;"-";"");5;2)
)
Как извлечь дату рождения из ИИН в Google Таблицах?
Формулы идентичны Excel, но используйте LEFT вместо ЛЕВСИМВ, MID вместо ПСТР, и TODAY вместо СЕГОДНЯ. Пример:
=DATE(
IF(LEFT(A2;1)="0"; 2000; 1900) + LEFT(A2;2);
MID(A2;3;2);
MID(A2;5;2)
)
Что делать, если формула выдаёт дату на 1 день раньше (например, 30.06 вместо 01.07)?
Это ошибка связанная с временными зонами или форматом даты. Используйте ЦЕЛОЕ() для округления:
=ЦЕЛОЕ(ДАТА(...))
Или проверьте настройки региональных параметров в Панель управления → Часы и регион.
Можно ли извлечь место рождения из ИИН?
Нет, в ИИН Казахстана место рождения не закодировано. Для этого нужны дополнительные данные (например, из базы ЗАГС или миграционной службы). Однако 7-я и 8-я цифры ИИН могут указывать на порядковый номер записи в базе, что косвенно связано с регионом выдачи.
Как проверить, что ИИН принадлежит живущему человеку?
По ИИН нельзя определить статус человека (жив/умер). Для этого нужны данные из еГов или других государственных реестров. Однако если дата рождения в ИИН указывает на возраст >120 лет, это может быть признаком ошибки или архивной записи.