Как извлечь дату из подстроки в Excel, если формат даты меняется? - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь извлечь даты из подстроки в столбце D2 / D3 в столбце L2 / L3. Однако формат даты в подстроке отличается. Иногда даты вводятся в формате ММ / ГГ или ММ / ГГГГ. Сейчас я использую формулу ниже, но мне нужно изменить 5 на 7, когда дата в подстроке вводится в формате MM / YYYY.

= SUBSTITUTE (SUBSTITUTE (MID (D2, FIND ("/", D2) -2,5), "-", ""), "/", "/ 01 /") * 1

пример подстроки в столбце D

1 Ответ

1 голос
/ 10 июля 2020

Если будет всегда будет ровно 1 sla sh, то вы можете использовать двухэтапную формулу. Предположим, это ММ / ГГГГ. Попробуйте сначала извлечь это как дату. Если это не удается, то это формат ММ / ГГ.

=IFERROR(
  DATE(MID(D2,FIND("/",D2,1)+1,4),SUBSTITUTE(MID(D2,FIND("/",D2,1)-2,2), "-", ""),1),
  DATE(MID(D2,FIND("/",D2,1)+1,2)+2000,SUBSTITUTE(MID(D2,FIND("/",D2,1)-2,2), "-", ""),1)
)      \-----------------------------/ \---------------------------------------------/ ^
                       |                                      |                        |
                     year                                   month                     day

Мне пришлось использовать функцию DATE() для создания реального значения даты, так что в случае сбоя она вернет ошибку, чтобы он будет использовать вторую часть, чтобы использовать год два di git. (Не включайте примечание year/month/day в фактическую формулу ...)

Или даже лучше, поскольку ваша формула уже работает для ММ / ГГ, тогда, если первое преобразование DATE() завершится неудачно, оно будет используйте свою формулу. Таким образом, вам не нужно предполагать, что значение YY - это год 2000 или позже ...

=IFERROR(
  DATE(MID(D2,FIND("/",D2,1)+1,4),SUBSTITUTE(MID(D2,FIND("/",D2,1)-2,2), "-", ""),1),
  SUBSTITUTE(SUBSTITUTE(MID(D2,FIND("/",D2)-2,5),"-",""),"/","/01/")*1
)
...