![Преобразование текста в дату в Excel](https://rvso.com/image/1641932/%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0%20%D0%B2%20%D0%B4%D0%B0%D1%82%D1%83%20%D0%B2%20Excel.png)
Мне нужна ваша помощь в конвертации текста - «Цена НА ПЕРИОД С 08/01/21 ПО 15/01/21» на дату 15/01/2021.
Я использую формулу =DATE(RIGHT(TRIM(RIGHT(SUBSTITUTE(TRIM(Edited!A2)," ",REPT(" ",100)),100))&"20",4),MID(TRIM(RIGHT(SUBSTITUTE(TRIM(Edited!A2)," ",REPT(" ",100)),100))&"20",4,2),LEFT(TRIM(RIGHT(SUBSTITUTE(TRIM(Edited!A2)," ",REPT(" ",100)),100))&"20",2))
, но получаю на выходе 15/01/2120 вместо 15/01/2021.
Может ли кто-нибудь помочь по вышеизложенному?
решение1
Поскольку ваша строка заканчивается датой из 8 символов, за которой следует пробел, мы можем использовать:
=LEFT(RIGHT(TRIM(Edited!A2),8),6) & RIGHT(RIGHT(TRIM(Edited!A2),8),2)+2000
Примечание:
Это изолирует дату и преобразует 2-значный год в 4-значный год.
Это можно сделать короче, если вы используетеЭксель 365.
Результатом является строка, а не настоящая дата Excel.
ПРАВКА №1:
Если поставить месяц первым:
=MID(RIGHT(TRIM(Edited!A2),8),4,3) & LEFT(RIGHT(TRIM(Edited!A2),8),3) & RIGHT(RIGHT(TRIM(Edited!A2),8),2)+2000
ПРАВКА №2:
Если вы используетеЭксель 365, то вы создаете настоящую дату Excel с помощью:
=LET(d,RIGHT(TRIM(Edited!A2),8) ,DATE(RIGHT(d,2)+2000,MID(d,4,2),LEFT(d,2)))
решение2
Подходит ли вам этот простой способ?
=DATEVALUE(TRIM(RIGHT(SUBSTITUTE(TRIM(Edited!A2)," ",REPT(" ",100)),100)))
Как вы сказали,
=TRIM(RIGHT(SUBSTITUTE(TRIM(Edited!A2)," ",REPT(" ",100)),100))
получает последнюю строку в предложении,
а затем =DATEVALUE()
преобразует строку в данные datetime, и результат зависит от настроек локали вашего компьютера.
Кроме того, вы должны установить форматирование столбца как datetime и легко настроить его ( mm/dd/yyyy
или dd/mm/yyyy
т. д.).
Если вы знаете длину строки даты в конце и она фиксированная, то все будет проще:
=DATEVALUE(RIGHT(TRIM(Edited!A2),8))