我正在尝试编写一个宏,该宏循环通过具有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
关于excel - 删除行偏移量为1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41153675/