如何获取指定月份可用最后一天对应的数据值?
嘿,这个需求我之前也帮别人处理过,给你分享几个靠谱的实现方法,不管你用Excel还是Python都能轻松搞定:
方法一:Excel公式实现
首先要确保你的A列日期已经被Excel识别为日期格式(而不是纯文本),不然公式可能无法正常工作。
方案1:用LOOKUP + EOMONTH组合
这个方法直接定位目标月份的最后一天,然后匹配对应数值,简洁高效:
=LOOKUP(EOMONTH(DATE(2020,1,1),0),A:A,B:B)
DATE(2020,1,1):指定你要查询的年份和月份(这里是2020年1月)EOMONTH(...,0):返回该月份的最后一天日期(这里会得到2020/1/28)LOOKUP:在A列找到这个最后一天的日期,返回对应B列的数值
如果想动态调整年份和月份,可以把年份和月份放在单元格里(比如C1存年份,C2存月份),公式改成:
=LOOKUP(EOMONTH(DATE(C1,C2,1),0),A:A,B:B)
方案2:用MAXIFS + INDEX/MATCH组合
先筛选出目标月份的所有日期,找到其中最大的(也就是最后一天),再匹配对应数值:
=INDEX(B:B,MATCH(MAXIFS(A:A,A:A,">="&DATE(2020,1,1),A:A,"<="&EOMONTH(DATE(2020,1,1),0)),A:A,0))
MAXIFS:筛选出2020年1月范围内的最大日期MATCH:找到这个日期在A列的位置INDEX:根据位置返回B列对应的数值
方法二:Python Pandas实现
如果用代码处理数据,Pandas是个非常方便的工具:
import pandas as pd # 构造你的数据 data = {'A': ['01/01/2020', '28/01/2020', '03/02/2020', '04/03/2020'], 'B': [10, 20, 30, 40]} df = pd.DataFrame(data) # 把A列的字符串转成日期格式(注意这里是日/月/年的格式) df['A'] = pd.to_datetime(df['A'], format='%d/%m/%Y') # 筛选出目标月份(这里是1月)的行,取最后一行的B值 target_month = 1 result = df[df['A'].dt.month == target_month].iloc[-1]['B'] print(result) # 输出结果:20
这个方法适合批量处理大量数据,调整target_month就能快速切换查询的月份。
内容的提问来源于stack exchange,提问作者Marcello Impastato




