Excel 如何从字符串中提取日期?

Excel 如何从字符串中提取日期?,excel,excel-formula,Excel,Excel Formula,我正在尝试仅通过excel公式从字符串中提取日期。下面是我的数据样本 Only contains one date 01/05/2021 to this example Project start date is 01/01/2021 and end date is 31/01/2021 There may multiple date like 1st 01/01/2021 2nd 01/06/2021 and 3rd 31/12/2021 我的计算机本地日期格式为dd/mm/yyyy。我试

我正在尝试仅通过excel公式从字符串中提取日期。下面是我的数据样本

Only contains one date 01/05/2021 to this example
Project start date is 01/01/2021 and end date is 31/01/2021
There may multiple date like 1st 01/01/2021 2nd 01/06/2021 and 3rd 31/12/2021

我的计算机本地日期格式为
dd/mm/yyyy
。我试图通过
FILTERXML()
formula来实现它。我试过下面的公式,也试过其他几种方法,但都失败了

=TRANSPOSE(FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[translate(.,'dd/mm/yyyy','')!=.]"))
=转置(FILTERXML(“&SUBSTITUTE(A1,”,“)&“//s[translate(,'dd/mm/yyyy',”)!=。]”)
我的预期输出如下所示-


如果您想使用纯xpath,那么您可以尝试通过以下几个步骤完全验证您的模式:
dd/mm/yyyy

请注意,如果Excel将“dd/mm/yyyy”识别为日期,则返回的数组将返回这些日期的等效数字。如果字符串中不存在其他数值,则可以使用Microsoft365功能1:

=LET(X,FILTERXML(“&SUBSTITUTE(A1,”,“)&“/s)”),转置(TEXT(FILTER(X,ISNUMBER(X)),“dd/mm/e”))

1:注意您可以删除嵌套的
TEXT()
函数和数字,也可以将单元格格式设置为
dd/mm/e

明白!删除
TEXT()
将使公式更简洁。我只需要将excel单元格的格式设置为正确的日期格式。谢谢你的解释。
=TRANSPOSE(TEXT(FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[substring(., 3, 1)= '/'][substring(., 6, 1)= '/'][string-length(translate(., '/' , '')) = 8][translate(., '/' , '')*0=0]"),"dd/mm/e"))
=TRANSPOSE(TEXT(FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[contains(., '/')]"),"dd/mm/e"))
=LET(X,FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s"),TRANSPOSE(TEXT(FILTER(X,ISNUMBER(X)),"dd/mm/e")))