在文本文件中标识datedate的格式不正确

我需要从C2中提取date,并找出在C2和A1的date之间的差异

date格式为“2015年7月18日”,有什么想法? 编辑数据库每个单元格有不同数量的文本。 有没有在这附近,以便我可以将公式应用到每个细胞,并拉日/月/年?

编辑,所以在答案中列出的功能不适用于各种文本

你将需要经历一系列的string操作和date时间函数。 让我们假设你的string在C2单元格中。 为了做到这一点,我们将从最大的单位(年)到最小的单位(天)。 你可以以任何顺序来完成,因为它将被整合到一个公式中,但是对于步骤的分解,它可以有一个命令。

步骤1)拔出年份

=MID(C2,FIND(" ",C2,FIND(" ",C2)+1)+1,4) 

这将给我们在第二个空间之后的string的最后4个字符,在这个例子中是今年。

第2步)拉出月份

 =MONTH(DATEVALUE(MID(C2,2,3)&"-"&1)) 

看第二个字符,并拉出string,这是你的月份。 然后将其转换为Excel格式,通过添加 – 和数字1来认定它是date缩写forms。 所以在你的情况下,如果看起来像7月1日。 Datevalue将其转换为exceldate序列,然后我们将回退并从您的案例中获取月份,即7

如果上述公式不适合您,可能是由于区域设置。 如果是这种情况,您可以使用以下内容:

 =MATCH(MID(C2,2,3),{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"},0) 

如果你使用这个公式,一定要相应地调整最后的公式。

步骤3)拉出日子

 =TRIM(MID(C2,FIND(" ",C2)+1,2)) 

所以上面的公式find第一个空格,然后开始拉动,然后是后面的2个字符。 现在因为我不知道这个月的第一个月是01还是1,所以可能会抓住1之后的空格。修剪function消除了多余的空间。

步骤4)build立date

Excel中的DATE函数需要YEAR,MONTH和DAY,并将这些值转换为exceldate序列。 在这种情况下,我们将转换:

 =DATE(year,month,day) 

通过从上面的我们的等式代入以下:

 =DATE(MID(C2,FIND(" ",C2,FIND(" ",C2)+1)+1,4),MONTH(DATEVALUE(MID(C2,2,3)&"-"&1)),TRIM(MID(C2,FIND(" ",C2)+1,2))) 

最后一点是确保你的单元格被格式化为date,而不是格式化为General或其他格式,这会导致date以整数格式显示。

现在假设你在A1中的date是Excel格式,你只需要在最后一个公式的前面加上A1-就可以了:

 =A1-DATE(MID(C2,FIND(" ",C2,FIND(" ",C2)+1)+1,4),MONTH(DATEVALUE(MID(C2,2,3)&"-"&1)),TRIM(MID(C2,FIND(" ",C2)+1,2))) 

现在,如果A1也像C2公式那样引用,则重复从C2中删除date的公式,但使用A1作为参考,并将其replace为最后一个公式中的A1:

 =DATE(MID(A1,FIND(" ",A1,FIND(" ",A1)+1)+1,4),MONTH(DATEVALUE(MID(A1,2,3)&"-"&1)),TRIM(MID(A1,FIND(" ",A1)+1,2)))-DATE(MID(C2,FIND(" ",C2,FIND(" ",C2)+1)+1,4),MONTH(DATEVALUE(MID(C2,2,3)&"-"&1)),TRIM(MID(C2,FIND(" ",C2)+1,2))) 

配方使用

文本/string函数

  • 修剪

date/时间函数

  • date
  • DATEVALUE