Поскольку ваши входные данные содержат даты до 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
в формулах с TRIM(A2)
или, что еще лучше, с SUBSTITUTE(A2," ","")
, решит эту проблему.