Hi Bob,
Try this code:
' ZVI:2010_01_26 vbaexpress.com/forum/showthread.php?t=30335
Sub DelCondDups()
' Purpose value (upper case) to be deleted
Const X = "UNKNOWN"
Dim Rng As Range, Arr(), r&, rs&, i&, k$, p$
' Set working range
With ActiveSheet.Range("A1:D1").CurrentRegion
Set Rng = .Resize(, 4)
rs = .Rows.Count
End With
If rs < 2 Then Exit Sub
' Empty the non unique values of DevName, taking into account Location values
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
Arr() = Rng.Value
For r = 2 To rs
k = Arr(r, 3)
p = Arr(r, 4)
If .Exists(k) Then
i = .Item(k)
If UCase(p) <> X And UCase(Arr(i, 4)) = X Then
Arr(i, 3) = Empty
.Item(k) = r
Else
Arr(r, 3) = Empty
End If
Else
.Item(k) = r
End If
Next
i = .Count + 1
End With
' Delete rows with empty values in DevName column
If i < rs Then
Rng.Value = Arr()
With Rng
.Sort .Cells(1, 3), 1, Header:=xlYes
.Rows(1).Resize(rs - i).Offset(i).Clear
End With
End If
End Sub
Regards,
Vladimir