You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用VBA将Excel数据粘贴至另一工作簿的昨日日期列下

解决Excel数据粘贴到昨日日期对应列的问题

嘿,我来帮你搞定这个需求!不管是手动操作还是自动化宏,都给你整理清楚了:

方法一:手动快速操作(适合偶尔用)

如果只是偶尔做一次,手动找列粘贴最直接:

  • 先选中你要复制的B3到B8区域,按Ctrl+C复制数据;
  • 切换到mastersheet,在第一行的日期表头里找到昨天的日期(比如你例子里的2/20/2018),点击这个日期所在的列标(比如A列)选中整列;
  • Ctrl+↓直接跳到该列最后一条数据的位置,再按一下就能定位到要粘贴的空白单元格;
  • 最后按Ctrl+V粘贴就搞定啦。

方法二:VBA宏自动化(适合重复操作)

如果需要经常做这个操作,写个小宏能省超多时间,步骤如下:

  1. 打开你的Excel文件,按Alt+F11打开VBA编辑器;
  2. 右键点击左侧的工作簿名称,选「插入」→「模块」;
  3. 把下面的代码粘贴到模块窗口里:
Sub PasteToYesterdayColumn()
    Dim srcSheet As Worksheet
    Dim masterSheet As Worksheet
    Dim yesterdayDate As Date
    Dim targetColumn As Range
    Dim lastRow As Long
    
    ' 这里改成你实际的源工作表名称(就是存B3:B8数据的表)
    Set srcSheet = ThisWorkbook.Worksheets("你的源表名称")
    Set masterSheet = ThisWorkbook.Worksheets("mastersheet")
    
    ' 获取昨天的日期
    yesterdayDate = Date - 1
    
    ' 在主表第一行找昨天的日期列
    On Error Resume Next
    Set targetColumn = masterSheet.Rows(1).Find(What:=yesterdayDate, LookIn:=xlValues, LookAt:=xlWhole)
    On Error GoTo 0
    
    ' 如果找到对应列就粘贴
    If Not targetColumn Is Nothing Then
        srcSheet.Range("B3:B8").Copy
        ' 找到目标列最后一行的下一个空白行
        lastRow = masterSheet.Cells(masterSheet.Rows.Count, targetColumn.Column).End(xlUp).Row + 1
        ' 只粘贴值(要粘贴格式的话改成xlPasteAll)
        masterSheet.Cells(lastRow, targetColumn.Column).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False ' 取消复制状态
        MsgBox "数据已经成功粘贴到昨天日期的列啦!"
    Else
        MsgBox "没找到昨天的日期列哦,检查下表头的日期格式是不是和系统一致~"
    End If
End Sub
  1. 把代码里的"你的源表名称"改成实际存放B3:B8数据的工作表名字;
  2. F5运行宏,或者回到Excel界面按Alt+F8选择这个宏运行就行。

小提醒

  • 要确保主表第一行的日期是日期格式,不是文本格式,不然宏可能找不到对应列;如果表头是文本日期,可以把代码里的LookIn:=xlValues改成LookIn:=xlFormulas试试;
  • 如果需要连格式、公式一起粘贴,把代码里的xlPasteValues换成xlPasteAll就可以了。

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

火山引擎 最新活动