删除行偏移1

我正在尝试编写一个macros,这个macros可以循环使用一列有3列的费率:rate_table,rate_date,rate

这是我迄今为止。 我想我只需要命令来删除该行

Private Const RATE_TABLE_COL = 1 Private Const RATE_DATE_COL = 2 Private Const RATE_COL = 3 Sub RemoveDuplicateRates() Dim iLastRow As Long, iRow As Long, sThisRate As String, sPrevRate As String 'Find the last row (in column A) with data. iLastRow = shtSource.Range("A:A").Find("*", searchdirection:=xlPrevious).Row If iLastRow < 2 Then MsgBox "No data to process!", vbCritical Exit Sub End If sThisRate = "" sPrevRate = "" For iRow = iLastRow To 1 Step -1 sPrevRate = sThisRate sThisRate = Cells(iRow, 1) If sThisRate = sPrevRate Then If Cells(iRow, RATE_COL) = Cells(iRow - 1, RATE_COL) Then ' need code here to delete row offset by 1 from iRow End If End If Next iRow End Sub 

这是最后的工作代码:

 Private Const RATE_TABLE_COL = 1 Private Const RATE_DATE_COL = 2 Private Const RATE_COL = 3 Sub RemoveDuplicateRatesRev2() Dim iLastRow As Long, iRow As Long, sThisRate As String, sPrevRate As String, shtSource As Worksheet Set shtSource = ActiveSheet 'Find the last row (in column A) with data. iLastRow = shtSource.Range("A:A").Find("*", searchdirection:=xlPrevious).Row If iLastRow < 2 Then MsgBox "No data to process!", vbCritical Exit Sub End If sThisRate = "" sPrevRate = "" For iRow = iLastRow To 1 Step -1 sPrevRate = sThisRate sThisRate = shtSource.Cells(iRow, 1) If sThisRate = sPrevRate Then If shtSource.Cells(iRow, RATE_COL) = shtSource.Cells(iRow + 1, RATE_COL) _ And shtSource.Cells(iRow, RATE_DATE_COL) < shtSource.Cells(iRow + 1, RATE_DATE_COL) Then ' need code here to delete row offset by 1 from iRow shtSource.Cells(iRow + 1, RATE_COL).EntireRow.Delete End If End If Next iRow End Sub