Excel下拉筛选问题求助:实现按选中月份筛选日期列
Excel下拉筛选“本月”记录的公式方案
前提说明
假设你的原始数据范围是A:D(A-C为固定列,D列为订单日期),顶部下拉菜单单元格为A1,选项包含“本月”。
方案1:适用于Excel 365/2021(动态数组)
在结果区域的首个单元格(比如F2)输入以下公式,公式会自动溢出填充所有符合条件的记录:
=IF(A1="本月",FILTER(A:D,(YEAR(D:D)=YEAR(TODAY()))*(MONTH(D:D)=MONTH(TODAY())),""),A:D)
- 逻辑:当
A1选中“本月”时,筛选出D列日期为当前年月的记录;否则显示全部原始数据 - 若需要固定筛选某一月,把
YEAR(TODAY())和MONTH(TODAY())换成具体值,比如YEAR(2024)、MONTH(6)
方案2:适用于旧版Excel(无动态数组)
在结果区域的F2单元格输入以下数组公式(输入后按Ctrl+Shift+Enter确认,不要直接回车):
=IF(A1<>"本月",A2,IFERROR(INDEX(A:A,SMALL(IF((YEAR(D:D)=YEAR(TODAY()))*(MONTH(D:D)=MONTH(TODAY())),ROW(D:D)),ROW(A1))),""))
完成后横向拖动公式到I2(对应原始A-D列),再纵向拖动填充到需要的行数,直到出现空白。
注意事项
- 替换公式中的
A:D、D:D为你实际的数据列范围 - 如果下拉菜单有其他选项(如“上月”),可扩展
IF条件,例如:=IF(A1="本月",FILTER(A:D,(YEAR(D:D)=YEAR(TODAY()))*(MONTH(D:D)=MONTH(TODAY())),""),IF(A1="上月",FILTER(A:D,(YEAR(D:D)=YEAR(TODAY()))*(MONTH(D:D)=MONTH(TODAY())-1),""),A:D))
内容的提问来源于stack exchange,提问作者ali 97
相关产品推荐
相关产品推荐

