如何实现表格自动仅展示当前月及上一月数据无需手动筛选
实现动态展示近两个月数据的方案
通用核心逻辑
- 从系统获取当前实时日期,提取当前的年份、月份数值
- 计算上一月的年份、月份:自动处理跨年场景,比如当前为1月时,自动匹配去年12月的数值
- 用计算得出的两组年月值,和表格的
Year、Month列做匹配,过滤出符合条件的行再输入给可视化组件
场景1:Excel / Power BI 实现
- 第一步:新增辅助列/计算列,输入判断公式
Power BI DAX 公式示例:是否近两月 = IF( ( [Year] = YEAR(TODAY()) && [Month] = MONTH(TODAY()) ) || ( [Year] = YEAR(EOMONTH(TODAY(),-1)) && [Month] = MONTH(EOMONTH(TODAY(),-1)) ), "是", "否" )
Excel 公式示例:=IF( OR( AND(YEAR(TODAY())=[@Year], MONTH(TODAY())=[@Month]), AND(YEAR(EDATE(TODAY(),-1))=[@Year], MONTH(EDATE(TODAY(),-1))=[@Month]) ), "是", "否" ) - 第二步:将可视化组件的筛选器绑定到新增列,仅筛选值为是的行即可,后续打开文件会自动根据当前时间计算,无需手动修改筛选条件
场景2:SQL 数据预处理实现
如果数据从数据库查询获取,可直接在查询语句中加过滤条件,MySQL示例如下:
SELECT * FROM 你的表名 WHERE -- 匹配当前月 (Year = YEAR(CURDATE()) AND Month = MONTH(CURDATE())) OR -- 匹配上一月 (Year = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND Month = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)))
查询结果直接为近两个月的数据,传给可视化组件即可,不需要额外加筛选。
场景3:Python Pandas 可视化实现
用Python处理数据再做可视化的场景,直接在DataFrame中做过滤即可:
import pandas as pd from datetime import datetime # 假设df为你的原始数据DataFrame current_date = datetime.now() current_y, current_m = current_date.year, current_date.month last_month_date = current_date - pd.DateOffset(months=1) last_y, last_m = last_month_date.year, last_month_date.month # 过滤数据 filtered_df = df[ ((df['Year'] == current_y) & (df['Month'] == current_m)) | ((df['Year'] == last_y) & (df['Month'] == last_m)) ] # 把filtered_df传给matplotlib/plotly/streamlit等可视化组件即可
注意如果你的
Month列是文本格式(比如"1月"、"January"),需要先转换为数值格式再做判断,避免匹配出错。
内容的提问来源于stack exchange,提问作者MDL7833
相关产品推荐
相关产品推荐

