当2个不同工作表中的2个单元格相同时,删除工作表中的行

时间:2017-08-08 12:13:00

标签: excel vba excel-vba

此宏应比较同一工作簿中2个工作表中2个不同行中的单元格。如果单元格的值与第三个工作表中具有相同值的单元格的行匹配,则应删除相同的工作簿。

在比较的工作表中是公式,但不在工作表中,应删除行。

问题是它不会删除第三张表格中的单元格。 我插入了一些代码,告诉我比较有效。但代码似乎随机删除了东西。

我尝试了以下解决方案(还有一些其他人不再使用链接)链接:

How to compare columns from two different excel workbooks

Compare 2 cells in different sheets in VBA(Excel 2010)

Sub Vergleich_alter_Kundenausdruck_mit_aktuellen_Werten_V3()

Application.ScreenUpdating = False

Dim Sht1LastRow As Long
Dim i As Long
Dim j As Long

Set s1 = Sheets("Konditionen")
Set s2 = Sheets("Konditionseingabeausdruck")
Set s3 = s2.Next

Sht1LastRow = Sheets("Konditionen").Cells(65536, 1).End(xlUp).Row

For i = Sht1LastRow To 15 Step -1        
  If IsEmpty(s1.Cells(i, 6)) = True Then GoTo leer:                        
  If s3.Cells(i, 5).Value <> s1.Cells(i, 6).Value Then
    s1.Cells(i, 10).Value = s3.Cells(i, 5).Value       
  ElseIf s3.Cells(i, 5).Value = s1.Cells(i, 6).Value Then
    s2.Cells(i, 6).EntireRow.Delete
    s1.Cells(i, 9).Value = s3.Cells(i, 5).Value
  Else                        
    GoTo leer:
  End If            
leer:              
Next i        

Application.ScreenUpdating = True

End Sub

1 个答案:

答案 0 :(得分:0)

如果使用代码:

Dim i As Long
With Workbooks("Book1").Worksheets("Sheet1")
    For i = 1 To 4
        If IsEmpty(.Cells(i, 1)) Then .Rows(i).Delete
    Next i
End With

你会错过一些行。例如,如果代码删除第3行,则第4行将变为第3行。但是,变量i将更改为4.因此,在这种情况下,代码将错过一行并检查另一行,而不是以前的范围。

在你的情况下你应该使用这个

For i = Sht1LastRow To 15 Step -1