Sub Remove_Duplicates()
Dim wsLoan_Sheet As Worksheet
Dim sLoanNum As String
Dim iLoopCtr As Integer
Dim x As Integer
Dim iDelRow As Integer
Set wsLoan_Sheet = ThisWorkbook.Sheets(1) '<-- Change to reference your data sheet
' Sort by Loan Number (Col B), Bank Name (Col D), City (Col E)
With wsLoan_Sheet
.Range("B1:E" & .UsedRange.Rows.Count).Sort Key1:=.Range("B1"), Order1:=xlAscending, Key2:=.Range("D1"), Order2:=xlAscending, _
Key3:=.Range("E1"), Order3:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
' Validate deletion rules
For iLoopCtr = 2 To .UsedRange.Rows.Count
sLoanNum = .Range("B" & iLoopCtr)
x = 1
' Is it the only instance of this Loan Number
If .Range("B" & iLoopCtr + x) = sLoanNum Then
' Validate first instance of Loan Number
If IsEmpty(.Range("D" & iLoopCtr)) Or IsEmpty(.Range("E" & iLoopCtr)) Then
.Range("F" & iLoopCtr) = "Delete"
End If
' Validate other instances of Loan Number
Do Until Not .Range("B" & iLoopCtr + x) = sLoanNum
If IsEmpty(.Range("D" & iLoopCtr + x)) Or IsEmpty(.Range("E" & iLoopCtr + x)) Then
.Range("F" & iLoopCtr + x) = "Delete"
End If
x = x + 1
Loop
End If
iLoopCtr = iLoopCtr + x - 1
Next iLoopCtr
' Sort to perform mass deletion
.Range("B1:F" & .UsedRange.Rows.Count).Sort Key1:=.Range("F1"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
iDelRow = .Range("F" & .UsedRange.Rows.Count).End(xlUp).Row
.Rows("2:" & iDelRow).Delete shift:=xlUp
.Columns("F:F").Delete shift:=xlLeft
' Sort by Loan Number
.Range("B1:E" & .UsedRange.Rows.Count).Sort Key1:=.Range("B1"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
Set wsLoan_Sheet = Nothing
End Sub