作者:绿色风
分类:
时间:2022-08-17
浏览:115
楼主 wjc2090742 |
Q:如何从日期以“.”分隔的记录中提取指定月份的记录?如下左图,日期以.分隔,是不规范的格式,如果不修改此列日期,如何按照右图中的N1月份提取记录,不考虑年份?
A:本例的重点在于对不规范时间的处理,通常可以用下面的数组公式右拉下拉:- =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 也就是先把日期列进行处理,变成规范的日期,然后用其月份与条件进行比对的正向思维方式。
也可以逆向进行思考,取个巧,本例的条件是月份,而观察图中不规范的日期列,以“.”分隔,月份前后都会有个“.”号,可以用下面的数组公式右拉下拉。- =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总版主之一