从字符串中提取日期

时间:2019-10-02 06:24:28

标签: date excel-formula

我有以下字符串:

CO_CAS_REA_NO_VIPPLUS_20190402_BONUS

我想提取日期部分(20190402)并尽可能将其转换为DD / MM / YY格式。

我尝试了一些“搜索”和“提取”公式,但无济于事。

有人知道如何在excel或VBA中执行此操作吗?

数据字符串的其他变化如下:

COCASREAHVPLUSVIPUK20190827CRMFSDEP
COCASREALVWINFIDEGL20190809CRMPTS
COSBINFLVFIDE20190830CRMBET
CO_CAS_RET_HVMV_UK_20190830_RB
COSB_REA_181INF_HVMV_FIDE_20190809_CRM_RB
COSBREAHVMVGL20190831CRMFBFSQUAL
COSBINFLVNO20190816CRMFB

5 个答案:

答案 0 :(得分:1)

假设在每个字符串中只有一个8位数字字符串,它表示要提取的YYYYMMDD形式的日期,则可以使用以下三个公式之一返回日期:

Example

方法1:

=DATE(LEFT(MAX(IFERROR(--MID(A1,ROW($A$1:INDEX($A:$A,LEN(A1))),8),0)),4),MID(MAX(IFERROR(--MID(A1,ROW($A$1:INDEX($A:$A,LEN(A1))),8),0)),5,2),RIGHT(MAX(IFERROR(--MID(A1,ROW($A$1:INDEX($A:$A,LEN(A1))),8),0)),2))

方法2:

=DATEVALUE(LEFT(MAX(IFERROR(--MID(A1,ROW($A$1:INDEX($A:$A,LEN(A1))),8),0)),4)&"/"&MID(MAX(IFERROR(--MID(A1,ROW($A$1:INDEX($A:$A,LEN(A1))),8),0)),5,2)&"/"&RIGHT(MAX(IFERROR(--MID(A1,ROW($A$1:INDEX($A:$A,LEN(A1))),8),0)),2))

方法3:

=DATEVALUE(TEXT(MAX(IFERROR(--MID(A1,ROW($A$1:INDEX($A:$A,LEN(A1))),8),0)),"0000-00-00"))

请注意,所有方法都使用数组公式,因此您必须按下 Ctrl + Shift + ,否则它们将无法正常运行。然后,您只需将公式向下拖动即可应用。

  

逻辑是使用此数组公式=MAX(IFERROR(--MID(A1,ROW($A$1:INDEX($A:$A,LEN(A1))),8),0))首先提取数字字符串。方法1和2遵循相同的逻辑,即从数字字符串中提取year YYYYmonth MMday DD组件,然后使用 DATE DATEVALUE 函数以返回日期。方法3使用格式化技巧快速将数字值转换为文本日期,然后使用 DATEVALUE 函数将文本日期转换为“实际”日期。

如果您有任何疑问,请告诉我。干杯:)

答案 1 :(得分:0)

使用excel公式,使用// XXXPage is your page XXXPage.getInitialProps = async (req) => { if (process.browser) { return __NEXT_DATA__.props.pageProps; } // original logic }函数

MID()

使用VBA,您可以使用“ _”将其拆分

=MID("CO_CAS_REA_NO_VIPPLUS_20190402_BONUS",23, 8)

答案 2 :(得分:0)

如果左侧的文本发生更改,您可能会发现它更灵活:

enter image description here

为节省您的输入,这里是单元格C1中的公式:

=MID(A1,FIND("LUS_",A1,1)+4,FIND("_BON",A1,1)-FIND("LUS_",A1,1)-4)

但是,它确实假定日期两侧的4个字符始终相同。

答案 3 :(得分:0)

假设字符串在A列中,而您只在寻找2019年,您可以使用此

=DATE(LEFT(MID(A1,SEARCH(2019,A1),8),4), MID(MID(A1,SEARCH(2019,A1),8),5,2), RIGHT(MID(A1,SEARCH(2019,A1),8),2))

答案 4 :(得分:0)

假设您的数据放在A列中

在B2中,输入公式:

=0+TEXT(AGGREGATE(14,6,--MID(A1,ROW($1:$250),8),1),"0000-00-00")

然后,B2 >>设置单元格格式,在“数字”选项卡中,选择:“日期” >>选择dd / mm / yy

全部抄下来

相关问题