我想从日期列中隔离month
和year
,但此列有两种格式:
2011年5月8日00:59 和 08-05-2011 。
如果我想在此列中添加一个新列来隔离月份和年份,例如: 05-2011 ,我该怎么做?
答案 0 :(得分:11)
尝试使用此公式(如果它不是日期,它将从A1
返回值):
=TEXT(A1,"mm-yyyy")
或者这个公式(它更严格,如果#VALUE
不是日期,则会返回A1
错误):
=TEXT(MONTH(A1),"00")&"-"&YEAR(A1)
答案 1 :(得分:1)
Please try类似于:
=IF(LEN(C1)>10,VALUE(LEFT(C1,FIND(" ",C1,8))),IF(ISTEXT(C1),DATE(RIGHT(C1,4),MID(C1,4,2),LEFT(C1,2)),C1))
您似乎有三种主要可能的情况:
以下ColumnA的格式为General,ColumnB为Date(我的默认设置)。 ColumnC也作为日期,但具有自定义格式以适合您的问题中提到的外观 关于文本格式是否是单元格内容的左对齐或右对齐的线索。
我建议对上述三种主要病例中的每一种进行单独治疗,因此使用=IF来区分它们。
这比其他任何一个都长,所以可以通过=LEN来区分长度大于10个字符。
在这种情况下,我们想要除了最后六个字符之外的所有字符,但为了增加灵活性(例如,如果时间元素包括秒数),我选择从左边而不是从右边开始计数。那么问题是月份名称的长度可能不同,所以我选择查找紧跟年份的空间以指示相关字符数的限制。
与=FIND一起查找" "
中的空格(C1
),从左边开始的C1
内的第八个字符开始,假设为这种情况下,天数将表示为两个字符,月份为三个或更多。
由于= LEFT是一个字符串函数,它返回一个字符串,但是这可以转换为=VALUE的值。
所以
=VALUE(LEFT(C1,FIND(" ",C1,8)))
在此示例中返回40671
- 在Excel’s 1900 date system中,2011年5月5日的日期序列号。
如果C1的长度不超过10个字符,我们仍然需要区分我选择用=ISTEXT做的文本条目或值条目,以及if条件为TRUE的条目(如对于C2)应用=DATE,它带有三个参数,这里提供:
=RIGHT(C2,4)
采用C2的最后四个字符,因此在此示例中为2011
。
=MID(C2,4,2)
从第四个字符开始,取C2的后两个字符,因此在此示例中为05
(表示May)。
=LEFT(C2,2))
取C2的前两个字符,因此在此示例中为08
(表示该月的第8天)。
日期不是文本函数,因此不需要包含在= VALUE中。
合在一起
=DATE(RIGHT(C2,4),MID(C2,4,2),LEFT(C2,2))
在此示例中也返回40671
,但来自Case#1的不同输入。
很简单,因为已经是日期序列号,所以只需
=C2
就足够了。
将上述内容放在一起,用一个公式涵盖所有三种情况:
=IF(LEN(C1)>10,VALUE(LEFT(C1,FIND(" ",C1,8))),IF(ISTEXT(C1),DATE(RIGHT(C1,4),MID(C1,4,2),LEFT(C1,2)),C1))
在ColumnH中应用的(格式化为适合OP)或通用格式(以显示值为整数):
答案 2 :(得分:0)
您可以右键单击这些单元格,转到格式,选择自定义,然后键入mm yyyy。
答案 3 :(得分:-2)
我要求提供一份报告,按日显示详细信息,其中日期字段的格式为日期&时间,我只是将日期列的格式更改为“常规”,然后在新列中使用以下公式,
=CONCATENATE(YEAR(C2),MONTH(C2))