Поскольку ваши входные данные содержат даты до 1900 года, все становится немного сложнее. Самый простой способ справиться с этим - это работать исключительно с текстовыми представлениями дат.
Если вам на самом деле не нужна полная дата, а просто год, введите эту базовую формулу в любую ячейку в строке 2:2
:
=IFERROR(VALUE(LEFT(A2,4)),VALUE(RIGHT(A2,4)))
Для полной даты формула немного сложнее:
=IF(MID(A2,3,1)="-",A2,CHOOSE((LEN(A2)-4)/3+1,"01-01","01"&MID(A2,5,3),RIGHT(A2,2)&MID(A2,5,3))&"-"&LEFT(A2,4))
Объяснение:
Предварительно подтвержденная версия формулы полной даты выглядит следующим образом:
= IF( MID(A2,3,1)="-", A2, CHOOSE( (LEN(A2)-4)/3+1, "01-01", "01"&MID(A2,5,3), RIGHT(A2,2)&MID(A2,5,3) ) &"-"&LEFT(A2,4) )
Это довольно просто. Лишь немного хитрая вещь является первым аргументом CHOOSE()
функции (LEN(A2)-4)/3+1
. Это отображает длины введенных строк даты в индексы на основе 1, то есть → → .[yyyy, yyyy-mm, yyyy-mm-dd, dd-mm-yyyy]
[4, 7, 10, 10]
[1, 2, 3, 3]
Заметки:
- Предварительно подтвержденная формула действительно работает, если она введена.
Предостережения:
- В формулах предполагается, что все введенные даты хранятся в виде текста. (Формулы легко модифицируются для учета дат, хранящихся в виде серийных номеров.)
- Если входные даты содержат начальные / конечные пробелы, приведенные выше формулы могут работать неправильно. Они определенно не будут работать с пробелами (или другими символами) где-либо еще в строках даты. Замена всех
A2
s в формулахTRIM(A2)
, или, что еще лучшеSUBSTITUTE(A2," ","")
, решит эту проблему.