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

当导入工作表(Sheet 2)新增数据时自动给Sheet 1添加新行

Excel VBA 实现Sheet2新值自动追加到Sheet1

以下是可直接使用的VBA代码,能实现你需要的功能:

Sub AddNewValuesToSheet1()
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim lastRow1 As Long, lastRow2 As Long
    Dim i As Long, j As Long
    Dim isNewValue As Boolean
    
    ' 指定工作表,需与你实际的工作表名称一致
    Set ws1 = ThisWorkbook.Worksheets("Sheet1")
    Set ws2 = ThisWorkbook.Worksheets("Sheet2")
    
    ' 获取两个表第一列的最后一行行号
    lastRow1 = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row
    lastRow2 = ws2.Cells(ws2.Rows.Count, 1).End(xlUp).Row
    
    ' 遍历Sheet2第一列的所有值
    For i = 1 To lastRow2
        isNewValue = True
        ' 对比Sheet1第一列已有的值
        For j = 1 To lastRow1
            If ws2.Cells(i, 1).Value = ws1.Cells(j, 1).Value Then
                isNewValue = False
                Exit For ' 找到匹配值,跳出内层循环
            End If
        Next j
        
        ' 如果是新值,追加到Sheet1末尾
        If isNewValue Then
            lastRow1 = lastRow1 + 1
            ws1.Cells(lastRow1, 1).Value = ws2.Cells(i, 1).Value
        End If
    Next i
    
    MsgBox "新值已完成追加!"
End Sub

使用说明

  • 打开目标Excel文件,按下Alt + F11打开VBA编辑器
  • 在左侧工程窗口右键点击你的工作簿,选择「插入」→「模块」
  • 将上述代码粘贴到新建的模块窗口中
  • 返回Excel界面,按下Alt + F8,选中AddNewValuesToSheet1后点击「执行」

避免报错的注意事项

  • 确认工作表名称与代码中的Sheet1、Sheet2一致,若名称不同,直接修改代码里的工作表名称
  • 确保Sheet1和Sheet2的第一列没有合并单元格,合并单元格会导致行号判断错误
  • 运行前将文件保存为「启用宏的工作簿(.xlsm)」格式,否则宏无法正常保存和运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 04:15:57