VBA实现Excel数据覆盖导入:带关键字筛选与删除

在Excel数据处理中,经常需要将一个工作簿中的数据导入到另一个工作簿中,并进行覆盖或筛选操作。本文将介绍如何使用VBA代码实现Excel数据覆盖导入,并根据指定列和关键字进行筛选,同时删除目标工作表中符合条件的行。

代码功能:

  1. 判断目标工作表指定列是否包含指定的关键字。
  2. 如果包含关键字,则删除目标工作表中所有包含关键字的行,并将源工作簿中包含关键字的行导入到目标工作表中。
  3. 如果不包含关键字,则将源工作簿从第二行开始到最后一行的数据追加到目标工作表的最后一行之后。

VBA代码:

Sub ImportData()
    Dim wbSource As Workbook
    Dim wsTarget As Worksheet
    Dim keyword As String
    Dim lastRow As Long
    Dim i As Long

    ' 获取用户输入的关键字
    keyword = InputBox('请输入要筛选的关键字:')

    ' 设置源工作簿和目标工作簿
    Set wbSource = Workbooks.Open('C:\SourceWorkbook.xlsx')
    Set wsTarget = ThisWorkbook.Sheets('TargetSheet')

    ' 判断目标工作表指定列是否包含关键字
    If wsTarget.Range('A1').Value = '指定列标题' Then

        ' 删除目标工作表中包含关键字的行
        lastRow = wsTarget.Cells(wsTarget.Rows.Count, 'A').End(xlUp).Row
        For i = lastRow To 1 Step -1
            If InStr(1, wsTarget.Cells(i, 1).Value, keyword) > 0 Then
                wsTarget.Rows(i).Delete
            End If
        Next i

        ' 导入源工作簿中包含关键字的行
        lastRow = wbSource.Sheets('SourceSheet').Cells(wbSource.Sheets('SourceSheet').Rows.Count, 'A').End(xlUp).Row
        For i = 2 To lastRow
            If InStr(1, wbSource.Sheets('SourceSheet').Cells(i, 1).Value, keyword) > 0 Then
                wsTarget.Rows(wsTarget.Cells(wsTarget.Rows.Count, 'A').End(xlUp).Row + 1).Value = wbSource.Sheets('SourceSheet').Rows(i).Value
            End If
        Next i

    Else

        ' 将源工作簿从第二行开始到最后一行的数据追加到目标工作表的最后一行之后
        lastRow = wbSource.Sheets('SourceSheet').Cells(wbSource.Sheets('SourceSheet').Rows.Count, 'A').End(xlUp).Row
        wsTarget.Rows(wsTarget.Cells(wsTarget.Rows.Count, 'A').End(xlUp).Row + 1).Resize(lastRow - 1, wbSource.Sheets('SourceSheet').Columns.Count).Value = wbSource.Sheets('SourceSheet').Range('A2').Resize(lastRow - 1, wbSource.Sheets('SourceSheet').Columns.Count).Value

    End If

    ' 关闭源工作簿
    wbSource.Close False

End Sub

使用方法:

  1. 将上述代码复制到VBA编辑器中(Alt + F11)。
  2. 修改代码中的源工作簿路径、工作表名称、指定列标题以及关键字等信息,使其符合实际情况。
  3. 运行代码即可完成数据覆盖导入、筛选和删除操作。

注意事项:

  • 在运行代码之前,请确保已备份目标工作簿,以防止数据丢失。
  • 代码中的 '指定列标题' 需要替换为实际的列标题,例如 '产品名称' 或 '订单号' 等。
  • 可以根据需要修改代码中的关键字筛选条件,例如使用通配符进行模糊匹配等。

希望本文能够帮助您更好地利用VBA代码实现Excel数据处理自动化,提高工作效率!


原文地址: https://www.cveoy.top/t/topic/jxhn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录