在文本文件中标识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
- 月