繁体   English   中英

从日期单元格Excel中获取月份和年份

[英]Get month and year from date cells Excel

我想从日期列中隔离monthyear ,但此列有两种格式:

2011年5月8日00:5908-05-2011

如果我想要一个新的列来隔离这个专栏中的月份和年份,例如: 05-2011 ,我应该怎么做?

试试这个公式(它会从A1返回值,如果它不是一个日期):

=TEXT(A1,"mm-yyyy")

或者这个公式(它更严格,如果A1不是日期,它将返回#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))  

您似乎有三种主要可能的情况:

  1. 以时间为文本的空格分隔日期(例如下面的A1)
  2. 连字符分隔日期为文本(例如下面的A2)
  3. 格式化日期索引(如下面的A4和A5)

下面的ColumnA格式为General ,ColumnB格式为Date(我的默认设置)。 ColumnC也作为日期,但具有自定义格式以适合您的问题中提到的外观。
关于文本格式是否是单元格内容的左对齐或右对齐的线索。

我建议对上述三种主要病例中的每一种进行单独治疗,因此使用= IF来区分它们。

情况1

这比其他任何一个都长,因此可以区分为长度大于10个字符, = LEN
在这种情况下,我们想要除了最后六个字符之外的所有字符,但为了增加灵活性(例如,如果时间元素包括秒数),我选择从左边而不是从右边开始计数。 那么问题是月份名称的长度可能不同,所以我选择查找紧跟年份的空间以指示相关字符数的限制。

这与= FINDC1 寻找一个空格( " " ),从左边开始计算C1内的第八个字符,假设在这种情况下,天数将表示为两个字符,而月份则表示为三个或更多

由于= LEFT是一个字符串函数,它返回一个字符串,但是这可以转换为值为VALUE的值

所以

=VALUE(LEFT(C1,FIND(" ",C1,8))) 

在此示例中返回40671 - 在Excel的1900日期系统中 ,2011年5月5 的日期序列号。

案例#2

如果C1的长度不超过10个字符,我们仍然需要区分我选择使用= ISTEXT的文本条目或值条目,以及if条件为TRUE的情况(对于C2)apply = 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的不同输入。

案例#3

很简单,因为已经是日期序列号,所以只是

=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中应用于ColumnF(格式化为适合OP)或一般格式(以显示值为整数):

SO23928568示例

您可以右键单击这些单元格,转到格式,选择自定义,然后键入mm yyyy。

我要求提供一个报告,按月显示详细信息,其中日期字段被格式化为日期和时间,我只是将日期列的格式更改为“常规”,然后在新列中使用以下公式,

=CONCATENATE(YEAR(C2),MONTH(C2)) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM