You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何复制Excel中符合条件的数据:列A为当月日期且列E<99.96的A、D、E列

实现日期与数值双条件筛选并提取指定列数据

方法1:Excel动态公式提取(适用于365/2021及以上版本)

直接在空白单元格输入公式,即可自动提取符合条件的A、D、E列数据:

=CHOOSECOLS(FILTER(A:E, (MONTH(A:A)=MONTH(TODAY()))*(YEAR(A:A)=YEAR(TODAY()))*(E:E<99.96), "无符合条件数据"), 1,4,5)
  • MONTH(A:A)=MONTH(TODAY()) + YEAR(A:A)=YEAR(TODAY()):精准匹配当前年月的日期,避免跨年同月份干扰
  • E:E<99.96:匹配数值小于99.96的条件
  • CHOOSECOLS:从筛选结果中提取第1、4、5列(对应A、D、E列)

方法2:高级筛选(兼容全版本Excel)

  1. 构建条件区域:在空白区域输入
    • 第一行:与数据区域A、E列完全一致的标题
    • 第二行:=MONTH(TODAY())、<99.96
  2. 选中数据区域,点击「数据」选项卡→「高级」筛选
  3. 在弹窗中设置:
    • 列表区域:选择完整数据范围(如$A$1:$E$1000)
    • 条件区域:选择刚才构建的条件范围
    • 勾选「将筛选结果复制到其他位置」,指定结果起始单元格
  4. 确定后手动删除不需要的列,保留A、D、E列即可

方法3:VBA脚本自动化处理

如果需要批量重复执行,可使用以下脚本:

Sub FilterAndExtract()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim destRow As Long
    
    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    destRow = 1 ' 可修改为结果存放的起始行
    
    ' 双条件自动筛选
    ws.Range("A1:E" & lastRow).AutoFilter Field:=1, Criteria1:=">=" & DateSerial(Year(Date), Month(Date), 1), _
        Operator:=xlAnd, Criteria2:="<=" & DateSerial(Year(Date), Month(Date) + 1, 0)
    ws.Range("A1:E" & lastRow).AutoFilter Field:=5, Criteria1:="<99.96"
    
    ' 复制筛选后的A、D、E列到G列起始位置
    ws.Range("A:A,D:D,E:E").SpecialCells(xlCellTypeVisible).Copy ws.Cells(destRow, "G")
    
    ' 取消筛选状态
    ws.AutoFilterMode = False
End Sub

使用方式:按Alt+F11打开VBA编辑器,插入模块粘贴代码,运行即可。

内容的提问来源于stack exchange,提问作者Jason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:03:40