如何在Excel中提取月末日期数据并获取每月最后一笔交易
解决Excel月末数据提取与每月最后一笔交易筛选问题
一、提取月末日期对应的数据
方法1:用筛选功能快速操作
选中日期列(比如你的B列),点击「数据」选项卡的「筛选」按钮,点击日期列的筛选箭头,选择「日期筛选」→「本月最后一天」,即可一键筛选出所有日期为月末当天的数据。
方法2:用函数批量提取
- 如果你用的是Excel 365/2021(支持动态数组),直接用FILTER函数:
这个公式会自动提取所有日期等于当月最后一天的整行数据。=FILTER(B:C, B:B=EOMONTH(B:B, 0)) - 旧版本Excel可以加辅助列:在空白列(比如D列)输入
=B2=EOMONTH(B2,0),下拉填充后,筛选D列为TRUE的行即可。
二、筛选每月最后一笔交易到F列
你之前用的=VLOOKUP(EDATE(E5, 0),B5:C19, 2)效果不好,是因为EDATE(E5,0)只是返回和E5同月同日的日期,既不是当月最后一天,也没法定位到该月最后一笔交易的实际日期(毕竟最后一笔交易不一定在月末当天)。下面给两个实用方案:
方案1:LOOKUP函数(全版本通用)
假设E列是要查询的月份(比如E5是2023/5/1这类任意当月日期),在F5输入:
=LOOKUP(1, 0/(TEXT(B:B,"yyyy-mm")=TEXT(E5,"yyyy-mm")), C:C)
原理:
TEXT(B:B,"yyyy-mm")=TEXT(E5,"yyyy-mm"):判断B列日期是否和E5同月份,返回一组TRUE/FALSE0/(...):把TRUE转成0,FALSE转成错误值LOOKUP(1,0/...,C:C):会找到最后一个0对应的C列值,也就是该月最后一笔交易的数据
方案2:INDEX+MATCH组合(精准定位最后交易日期)
如果想先找到该月最晚的交易日期,再取对应C列数据,用这个公式:
=INDEX(C:C, MATCH(MAX(IF(TEXT(B:B,"yyyy-mm")=TEXT(E5,"yyyy-mm"), B:B)), B:B, 0))
注意:旧版Excel需要按Ctrl+Shift+Enter完成数组输入,Excel 365/2021直接回车就行。
补充:如果要提取月末当天的交易
如果你的需求是只取月末当天的交易(而非当月最后一笔),可以用VLOOKUP结合EOMONTH:
=VLOOKUP(EOMONTH(E5,0), B:C, 2, FALSE)
EOMONTH(E5,0)会返回E5所在月份的最后一天,VLOOKUP会匹配该日期对应的C列数据。如果当月有多个月末交易,VLOOKUP只返回第一个,要取最后一个的话用=LOOKUP(EOMONTH(E5,0), B:C)
内容的提问来源于stack exchange,提问作者Brandon Lee
相关产品推荐
相关产品推荐

