从date单元格Excel中获取月份和年份
我想从date列中隔离month
和year
,但是此列有两种格式:
2011年5月08日00:59和08-05-2011 。
如果我想有一个新的专栏来隔离这个专栏的月份和年份,如: 05-2011 ,我该怎么做?
试试这个公式(如果它不是date的话,它会从A1
返回值):
=TEXT(A1,"mm-yyyy")
或者这个公式(它更严格,如果A1
不是date,它将返回#VALUE
错误):
=TEXT(MONTH(A1),"00")&"-"&YEAR(A1)
请尝试如下所示:
=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))
您似乎有三个主要可能的情况:
- 空格分隔date和时间作为文本(例如下面的A1)
- 以文字为单位的连字符分隔date(例如下面的A2)
- 格式化date索引(如下面的A4和A5)
下面的ColumnA被格式化为General和ColumnB作为date(我的默认设置)。 ColumnC也作为date,但与自定义格式,以适应您的问题中提到的外观。
关于文本格式是否是单元格内容的左alignment或右alignment的线索。
我build议对上述三个主要案例分别进行处理,所以用= IF来区分它们。
情况1
这比其他任何时间都长,因此可以被区分为具有大于10个字符的长度,其中= LEN 。
在这种情况下,除了最后六个字符之外,我们需要所有的字符,但是为了增加灵活性(例如,如果时间元素包括秒),我select从左边算起,而不是从右边算起。 问题在于月份名称的长度可能会有所不同,所以我select了紧跟在年份之后的空格来表示相关字符数量的限制。
这与= FIND在C1
寻找一个空格( " "
),从C1
左边的第八个字符开始计算,假设在这个情况下,date将被表示为两个字符,而月份则表示为三个或更多 。
由于= LEFT是一个string函数,它返回一个string,但是这可以被转换为= VALUE值 。
所以
=VALUE(LEFT(C1,FIND(" ",C1,8)))
在这个例子中返回40671
– 在Excel的1900年date系统中的date序列号为2011年5月5日。
案例#2
如果C1的长度不超过10个字符,我们仍然需要区分一个文本条目或一个我select使用的值条目= ISTEXT ,并且if条件为TRUE(对于C2)apply = DATE这需要三个参数,这里提供:
=RIGHT(C2,4)
截取C2的最后四个字符,因此在本例中为2011
。
=MID(C2,4,2)
从第四个字符开始,取C2的下两个字符,因此在本例中为05
(表示5月)。
=LEFT(C2,2))
取C2的前两个字符,因此在这个例子中是08
(代表该月的第八天)。 date不是文本函数,所以不需要包含在= VALUE中。
放在一起
=DATE(RIGHT(C2,4),MID(C2,4,2),LEFT(C2,2))
在这个例子中也返回40671
,但是来自情况1的不同input。
案例#3
很简单,因为已经有一个date序列号,所以只是
=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))
(在ColumnF中应用)(适用于OP的格式)或在ColumnH中以通用格式(显示值为整数)
你可以右键单击这些单元格,select格式,select自定义,然后inputmm yyyy。