Sub moveHV()
Worksheets("HV").Activate
Cells.Find(What:="60200 · Auto", After:=ActiveCell, LookIn:=xlFormulas2, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Application.CutCopyMode = False
Selection.Cut
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Cells.Find(What:="62200 · Marketing", After:=ActiveCell, LookIn:=xlFormulas2, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Application.CutCopyMode = False
Selection.Cut
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Cells.Find(What:="62500 · Office Expenses", After:=ActiveCell, LookIn:=xlFormulas2, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Application.CutCopyMode = False
Selection.Cut
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Cells.Find(What:="66000 · Utilities", After:=ActiveCell, LookIn:=xlFormulas2, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Application.CutCopyMode = False
Selection.Cut
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Sub moveHV()
Dim Wb As Excel.Workbook
Set Wb = ThisWorkbook
Dim Ws As Excel.Worksheet
Set Ws = Wb.Worksheets("HV")
On Error GoTo Error
Dim Rng As Excel.Range
Set Rng = Selection '// Selection may not be a range, ehence the error handler
On Error GoTo 0
If (Rng.Cells.Count > 1) Then
MsgBox "Please, select a single cell.", vbOKOnly + vbInformation
Else
moveData "60200 · Auto", Rng
moveData "62200 · Marketing", Rng
moveData "62500 · Office Expenses", Rng
moveData "66000 · Utilities", Rng
End If
Exit Sub
Error:
MsgBox "No cell selected!" & vbCrLf & vbCrLf & "Process aborted.", vbOKOnly + vbCritical
End Sub
Private Sub moveData(ByVal criteria As String, ByRef Rng As Excel.Range)
Dim Ws As Excel.Worksheet
Set Ws = Rng.Parent
Dim Source As Excel.Range
Set Source = Ws.Cells.Find(What:=criteria, After:=Rng, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not (Source Is Nothing) Then
Dim Target As Excel.Range
Set Target = Source.Offset(1, 0)
Target = Source
Source.Cells(1).Clear
End If
End Sub
Sub moveHV()
Dim Wb As Excel.Workbook
Set Wb = ThisWorkbook
Dim Ws As Excel.Worksheet
For Each Ws In Wb.Worksheets
Dim Column As Excel.Range
For Each Column In Ws.UsedRange.Columns
moveData "60200 · Auto", Column.Cells(1)
moveData "62200 · Marketing", Column.Cells(1)
moveData "62500 · Office Expenses", Column.Cells(1)
moveData "66000 · Utilities", Column.Cells(1)
Next
Next
End Sub
ActiveCell.Offset(1, 0).Select
Without testing, this should be always one row below the first found cell. So when there is a range of cells, then you get your overlap.
Sub moveHV()
Dim rngFound As Range
Dim ws As Worksheet
Dim varArray As Variant
Dim lngEntry As Long
Worksheets("HV").Activate
Set ws = ActiveSheet
With ws
varArray = Array("60200", "62200", "62500", "66000")
For lngEntry = 0 To UBound(varArray)
Set rngFound = .Cells.Find(What:=varArray(lngEntry), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, _
MatchCase:=False, SearchFormat:=False)
If Not rngFound Is Nothing Then
.Rows(rngFound.Row).EntireRow.Insert
End If
Next
End With
End Sub