【问题标题】:How do I extract the date from a substring in excel when date format varies?当日期格式变化时,如何从excel中的子字符串中提取日期?
【发布时间】:2020-07-09 23:33:43
【问题描述】:

我正在尝试从 L2/L3 列中 D2/D3 列的子字符串中提取日期。但是,子字符串中的日期格式不同。有时日期以 MM/YY 格式或 MM/YYYY 格式输入。现在我正在使用下面的公式,但是当子字符串中的日期以 MM/YYYY 格式输入时,我必须将 5 更改为 7。

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

example of substring in column D

【问题讨论】:

  • 好的,你的问题是:我有一列 (D) 的单元格包含字符串而不是日期。日期均为 MM/YY 或 MM/YYYY。如何从 D 列中的字符串中提取日期部分,并将其放入 L 中的相应行?如果我已经解释了您想要的内容,请您改写您的问题以使其更清楚。
  • 您能否确定单元格中唯一的/ 将是日期分隔符,而不仅仅是一个松散放置的/?你愿意使用 VBA 吗?也许你可以调整这个问题的答案之一:superuser.com/questions/1272456/…
  • @Michelle 是的,我正在尝试从 D 列中提取日期部分,并将其放入 L 列的相应行中。日期为 MM/YY 或 MM/YYYY 格式 -我的公式仅适用于 MM/YY。如何修复公式,以便以任何格式提取日期,并将其放入 L 列,而无需手动修复 MM/YYYY 格式的公式?

标签: excel date excel-formula substring


【解决方案1】:

如果总是正好是 1 个斜线,那么您可以使用两步公式。假设它是 MM/YYYY。尝试首先将其提取为日期。如果失败,则为 MM/YY 格式。

=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() 来构建一个真实的日期值,这样如果它失败就会返回一个错误,这样它就会使用第二部分来使用两位数的年份。 (不要在实际公式中包含year/month/day 注释...)

甚至更好,因为您的公式已经适用于 MM/YY,那么如果第一次 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
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    相关资源
    最近更新 更多