Вы всегда должны стремиться преобразовать что-то, похожее на дату, в дату.Дата всегда будет оставаться датой, и вы можете отобразить ее в любом формате, который вы хотите.Он даже переживет переход с одного языка на другой.
Так что если у вас источник даты, у вас все хорошо.Если это строка, я бы сделал это:
- преобразовать исходную строку с помощью = DATEVALUE () ... это будет работать, если название месяца написано на системном языке
- если временно изменить системный язык невозможно, следующим будет = DATE (yy, mm, dd), в результате чего аргументы должны быть созданы с помощью = LEFT (...), = MID (...), = RIGHT (...)
в конечном итоге вы должны преобразовать названия месяцев с одного языка на другой, как в следующем примере:
A1 содержит JANFEBMAR...
A2 содержит JÄNFEBMÄR...
формула преобразования =MID(A2;FIND("MAR";A1);3)
Редактировать в ответ на комментарий Кайла:
Помимо того факта, что немецкий (австрийский) языковой стандарт сразу распознает эту строку как дату, давайте разберем проблему на жевательные кусочки.Ваша строка даты обозначена в A1
- , временная часть проста: это аддитивный термин
TIMEVALUE(RIGHT(A1;8))
, разделяющий дату, с которой нам приходится бороться с разделителями в динамическом режиме.местах.Положение разделителей можно найти с помощью
2a) =FIND("/";A1;1)
... найти положение первого разделителя
2b) =FIND("/";A1;4)
... 2-й разделитель, при этом первая цифра можетбыть только 1 или 2 символами и без пробелов раньше - в качестве альтернативы мы должны заменить константу "4" на член (2a) + 1
2c) =FIND("/";A1;FIND("/";A1;1)+1)
... более безопасная версия (2b)
теперь у нас есть большинство вещей, готовых построить середину левой и правой стороны
3a) =LEFT(A1;FIND("/";A1;1)-1)
... 1-ая цифра ... длина (2a) -1
3b) =MID(A1;FIND("/";A1;1)+1;FIND("/";A1;FIND("/";A1;1)+1)-FIND("/";A1;1)-1)
... 2-я цифра ... начало: = (2a) +1, num_Chars = (2c) - (2a) -1
3c) =MID(A1;FIND("/";A1;FIND("/";A1;1)+1)+1;4)
... 3-я цифра ... start: = (2c) +1, num_chars = 4 - если год всегда равен 4 цифрам.более абстрактный случай был бы (3b) с (2c), являющимся =FIND()
для первого пробела
Как интерпретировать особенно 1-ю и 2-ю цифру (то есть MM / DD илиДД / ММ) зависит от вас.
теперь самое интересное, то есть объединение всех этих формул в одном монстре, чтобы получить дату
4a), начав с ввода= ДАТА (1; 2; 3)
4b) заменить 1 на (3c), 2 на (3b), 3 на (3a) ... не копировать начальный "="
4c) =DATE(MID(A1;FIND("/";A1;FIND("/";A1;1)+1)+1;4);MID(A1;FIND("/";A1;1)+1;FIND("/";A1;FIND("/";A1;1)+1)-FIND("/";A1;1)-1);LEFT(A1;FIND("/";A1;1)-1))+TIMEVALUE(RIGHT(A1;8))
Вы не видите время, только дату!.... Не забудьте указать пользовательский формат ячейки, отображающий дату и время, т.е. "ДД.ММ.ГГГГ чч: мм: сс"
ОК ... эта формула абсолютно нечитаема и непонятна, поэтомуВы можете захотеть отображать промежуточные результаты в (временных) полях / столбцах.
И эта формула будет работать, только если входная строка более или менее строго отформатирована.Он может справиться с некоторыми добавленными пробелами в первом и втором числах, но, начиная с YYYY, становится сложнее.Затем необходимо включить другие понятия, такие как удаление всех пробелов на =SUBSTITUTE(A1;" ";"")
перед всеми остальными и т. Д. И т. Д.
Подсказка : я всегда строю сложные формулы, как это: изолировать терминыв отдельных клетках, а затем объединить их в одну большую формулу