我正在尝试编写一个循环通过一组包含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
答案 0 :(得分:2)
这是最终的工作代码:
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