删除工作簿2中的多行取决于工作簿1中的单元格值
- 我需要VBA代码来打开Workbook2,具体取决于Workbook1(A1)中单元格的值。
- 在
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`
`