当导入工作表(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
相关产品推荐
相关产品推荐

