Hi,
try this example: RemoveOid.xlsm
Contains:
Option Explicit
Const FIRST_DATA_ROW As Long = 2
Public Sub RemoveOid(xlWs As Worksheet)
Dim aData, i As Long, xlRngDelete As Range, lngLastDataColumn As Long
With xlWs
aData = .Range(.Cells(2, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, .Cells(1, Columns.Count).End(xlToLeft).Column)).Value2
lngLastDataColumn = .UsedRange.Columns.Count
For i = LBound(aData, 1) To UBound(aData, 1)
If aData(i, 1) = "Oid" And _
aData(i, 2) = "Parent.Name" And _
aData(i, 3) = "LastVersion" And _
aData(i, 4) = "Ideas" And _
aData(i, 5) = "Scope" And _
aData(i, 6) = "Timebox.Name" Then
If xlRngDelete Is Nothing Then
Set xlRngDelete = .Range(.Cells(i + FIRST_DATA_ROW - 1, 1), .Cells(i + FIRST_DATA_ROW - 3, 6))
Else
Set xlRngDelete = ProperUnion(.Range(.Cells(i + FIRST_DATA_ROW - 1, 1), .Cells(i + FIRST_DATA_ROW - 3, lngLastDataColumn)), xlRngDelete)
End If
End If
Next i
If Not xlRngDelete Is Nothing Then
xlRngDelete.Delete Shift:=xlUp
Set xlRngDelete = Nothing
End If
Set aData = Nothing
End With
End Sub
and: http://www.cpearson.com/excel/BetterUnion.aspx
Inform me if you need code explanation.
Regards
Bookmarks