ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > 函数与公式 > 如何从日期以“.”分隔的记录中提取指定月份的记录?

如何从日期以“.”分隔的记录中提取指定月份的记录?

作者:绿色风 分类: 时间:2022-08-17 浏览:115
楼主
wjc2090742
Q:如何从日期以“.”分隔的记录中提取指定月份的记录?如下左图,日期以.分隔,是不规范的格式,如果不修改此列日期,如何按照右图中的N1月份提取记录,不考虑年份?

 
 

A:本例的重点在于对不规范时间的处理,通常可以用下面的数组公式右拉下拉:
  1. =INDEX(B:B,SMALL(IF(MONTH(SUBSTITUTE($E$3:$E$14,".","-"))=$N$1,ROW($3:$14),4^8),ROW(A1)))&""
其处理判断的部分是:MONTH(SUBSTITUTE($E$3:$E$14,".","-"))=$N$1
也就是先把日期列进行处理,变成规范的日期,然后用其月份与条件进行比对的正向思维方式。

也可以逆向进行思考,取个巧,本例的条件是月份,而观察图中不规范的日期列,以“.”分隔,月份前后都会有个“.”号,可以用下面的数组公式右拉下拉。
  1. =INDEX(B:B,SMALL(IF(ISERR(FIND("."&$N$1&".",$E$3:$E$100)),4^8,ROW($3:$100)),ROW(A1)))&""
其处理判断的部分是:ISERR(FIND("."&$N$1&".",$E$3:$E$100))
相比,可以下拉的范围较大,当MONTH函数中的参数为空时,会出现错误,所以第一法中所写的区域要与已有数据区域匹配。而反向的将月份处理成文本,再进行查找,则可以选择更大的查找范围,今后添加数据的时候,一时半会不用改动公式。

至于外层,套用经典的INDEX(...,SMALL(IF(......即可,参见下帖:
【公式解析系列】之条件筛选数组公式的几种经典解法 http://www.exceltip.net/thread-1889-1-1.html
人员信息.rar
2楼
gvntw
数据量很小可以,数据量大不要用数组公式。
规范数据,用替换或分列都可以解决,日期规范后,解决的方法就比较多了,如筛选、MS Query。

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap