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

基于Excel单元格日期值筛选复制指定列的VBA代码修改需求

修改后的Excel VBA代码

实现逻辑

  • 仅复制「Banks」工作表中G列赎回日期大于当前日期+6个月的行
  • 只提取每行的ISIN-code(B列)和Common name(C列),粘贴到「New Banks」工作表的A、B列(从第3行开始)
  • 执行前自动清空「New Banks」表A3:B1000区域的旧数据

完整代码

Sub Copydata()
    Application.ScreenUpdating = False
    
    Dim wsSource As Worksheet, wsTarget As Worksheet
    Dim lastRow As Long, targetRow As Long
    Dim i As Long
    
    ' 初始化目标工作表并清空旧数据
    Set wsTarget = Sheets("New Banks")
    wsTarget.Range("A3:B1000").ClearContents
    targetRow = 3 ' 目标表起始行
    
    ' 初始化源工作表
    Set wsSource = Sheets("Banks")
    lastRow = wsSource.Cells(wsSource.Rows.Count, 1).End(xlUp).Row ' 适配任意数据量的最后一行获取方式
    
    ' 逐行检查条件并复制数据
    For i = 2 To lastRow
        ' 判断G列赎回日期是否大于当前日期加6个月
        If wsSource.Cells(i, "G").Value > DateAdd("m", 6, Date) Then
            ' 复制B列(ISIN-code)到目标表A列
            wsTarget.Cells(targetRow, "A").Value = wsSource.Cells(i, "B").Value
            ' 复制C列(Common name)到目标表B列
            wsTarget.Cells(targetRow, "B").Value = wsSource.Cells(i, "C").Value
            targetRow = targetRow + 1 ' 目标行下移,准备下一条数据
        End If
    Next i
    
    Application.ScreenUpdating = True
End Sub

关键说明

  • DateAdd("m", 6, Date):精准计算当前日期向后推6个月的日期,避免手动计算的误差
  • 逐行遍历判断:替代原有的整列复制,确保只保留符合条件的数据
  • 动态获取最后一行:用wsSource.Rows.Count代替固定的1000,适配不同行数的数据源
  • 关闭屏幕刷新:减少代码执行时的界面闪烁,提升运行效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:25:17