删除工作簿2中的多行取决于工作簿1中的单元格值

  1. 我需要VBA代码来打开Workbook2,具体取决于Workbook1(A1)中单元格的值。
  2. B:B列(Workbook1)中存在值,如果这些值与A:A可用的值相同A:A列(Workbook2)删除包含(Workbook2)中相同值的整个行。

任何人都可以帮我创build代码?

我试过这个

  Private Sub CommandButton1_Click() Dim WB1, WB2 As Workbook Dim WS1, WS2 As Worksheet Set WB1 = ThisWorkbook CSN = Cells(1, 1) Set WB2 = Workbooks.Open("C:\Users\Basel\Desktop\" & CSN & "") Set WS1 = WB1.Worksheets("sheet1") Set WS2 = WB2.Worksheets("Sheet1") LastRow1 = WB1.WS1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row LastRow2 = WB2.WS2.Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To 20 If WB1.WS1.Cells(i, 2).Value = WB2.WS2.Cells(i, 1).Value Then WB2.WS2.Cells(i, 1).EntireRow.Delete End If Next i End Sub 

假设如下:

1)您创build了两个名为WorkBook1和WorkBook2的工作簿对象

2)您将两本书中的列“A”与名为“sheet1”的表进行比较

 Dim WB1sheet As Worksheet Dim WB2sheet As Worksheet Dim cell As Range Dim cell2 As Range Set WB1sheet = WorkBook1.Sheets("sheet1") Set wb2sheet = Workbook2.Sheets("sheet1") 'Loop through colum A For Each cell In WB1sheet.Range("a1", "a1000000") ' for each loop through the other sheet If cell = "" Then Exit For End If For Each cell2 In wb2sheet.Range("a1", "a1000000") If cell = cell2 Then cell2.ClearContents Exit For End If Next cell2 Next cell End Sub 

这将只留下一个空白的单元格不删除该行,删除该行更为棘手,因为每个循环将退出接收器并错过行。 如果你需要删除的行不只是清除,然后简单的解决办法是在列上做一个sorting,空白将全部移动到底部。 只要logging使用macroslogging的sorting。

祝你好运

真的,我做了一些修改代码,但它的作品。

  Private Sub CommandButton1_Click() Dim WB1, WB2 As Workbook Dim WS1, WS2 As Worksheet Dim CELL1 As Range Dim CELL2 As Range CSN = Cells(1, 1) Set WB1 = ThisWorkbook Set WB2 = Workbooks.Open("C:\Users\Basel\Desktop\" & CSN & "") Set WS1 = WB1.Worksheets("sheet1") Set WS2 = WB2.Worksheets("Sheet1") For Each CELL1 In WS1.Range("B1", "B10") If CELL1 = "" Then Exit For End If For Each CELL2 In WS2.Range("A1", "A10") If CELL1 = CELL2 Then CELL2.EntireRow.Delete Exit For End If Next CELL2 Next CELL1 WB2.Save WB2.Close Range("B:B").ClearContents End Sub` 

`