2017-04-12 106 views
1

我有兩個電子表格,其中一個包含我需要清理(命名爲「fedex」)的數據,方法是刪除一些與另一電子表格(名爲「sheet1」)中的數字列表匹配的行。 電子表格「fedex」列「H」具有與電子表格「sheet1」列「A」匹配的數字。如何刪除與其他工作表中的條件匹配的行?

我得到一個類型不匹配錯誤消息,當它到達set lastrow = fedex.cells(Rows.count,8)end(xlUp).Row

我不知道如果代碼的其餘部分將工作,因爲我被困在那裏。

這是我的代碼:

Sub deletepaidshipments() 

Dim fedex As Worksheet 
Set fedex = ThisWorkbook.Sheets("fedex_shipment_detail_payer_det") 
Dim sheet1 As Worksheet 
Set sheet1 = ThisWorkbook.Sheets("sheet1") 
Set lastrow = fedex.Cells(Rows.Count, 8).End(xlUp).Row 

For x = 2 To lastrow 
    t = 0 
    On Error Resume Next 
    t = Application.WorksheetFunction.Match(fedex.Range("h" & x), sheet1.Range("a :a"), 0) 
    On Error GoTo 0 
    If t > 0 Then 
     fedex.Rows(x, lastrow).Delete   
    End If 
Next x 

End Sub 
+0

'設置LASTROW = fedex.Cells(Rows.Count,8) .End(xlUp).Row'應該是'lastrow = fedex.Cells(fedex.Rows.Count,8).End(xlUp).Row' –

+0

它沒有工作......我得到相同的錯誤信息.. – DHI

回答

1

嘗試以下(代碼註釋中解釋)更短的代碼版本:

Option Explicit 

Sub deletepaidshipments() 

Dim FedexSht As Worksheet 
Dim Sht1 As Worksheet 
Dim LastRow As Long 
Dim x As Long 

Set FedexSht = ThisWorkbook.Sheets("fedex_shipment_detail_payer_det") 
Set Sht1 = ThisWorkbook.Sheets("sheet1") 

With FedexSht 
    LastRow = .Cells(.Rows.Count, "H").End(xlUp).Row 

    For x = LastRow To 2 Step -1 ' allways loop backwards when deleting rows 
     If Not IsError(Application.Match(.Range("H" & x).Value, Sht1.Range("A:A"), 0)) Then ' check if there is a match >> delete row 
      .Rows(x).Delete 
     End If 
    Next x 
End With 

End Sub 
+0

謝謝你的回答...我只是這樣做,它的工作... – DHI

相關問題