2017-08-08 145 views
0

此宏應該比較同一工作簿中2個工作表中的2個不同行中的單元格。當單元格的值與第三個工作表中具有相同值的單元格的行匹配時,應刪除相同的工作簿。當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 
+3

當你刪除行,你需要直通的行倒退一步,或者它只是變成一個爛攤子。 – braX

+0

謝謝你的回答braX!我改變了我= ...以Egan Wolf發佈的方式,現在我試圖讓它工作。 –

+0

我編輯我的問題與解決方案,我實現了從Egan Wolf和braX向後計數。單靠這一點並沒有解決我的問題,但讓我走上正軌。 我從使用第二個變量j切換到僅使用i。代碼還有一些問題,但我克服了我的死點!感謝你們兩位。 –

回答

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 
+0

你好Egan Wolf,謝謝你的快速回答!我正在嘗試實施您的建議。 我無法刪除s1/sheet1中的行,因爲這是發送給客戶的文檔。 另一方面,我切換到您的第二塊代碼爲i = .... 它仍然無法正常工作,但我仍然需要查看需要更改的內容,因爲我現在向後計算變量。 我試了一下後,我會告訴你發生了什麼事! –

相關問題