VBA find and Cut

Siyanna

Well-known Member
Joined
Nov 7, 2011
Messages
1,146
Hi All

what is the best way to find a specific value called Leaver in say range (A2:A50) and cut the entire row when found and paste it to the bottom deleting and blank cells in between?

my aim is to ensure that i have all leavers at the bottom of the data
 

Excel Facts

Lock one reference in a formula
Need 1 part of a formula to always point to the same range? use $ signs: $V$2:$Z$99 will always point to V2:Z99, even after copying
what is the best way to find a specific value called Leaver in say range (A2:A50)...
What exactly do you mean by "called"? Is Leaver the text in the cell, a Defined Name for a cell, something else?
 
Upvote 0
I don't not know if this is the best way (probably not), but here is one way to do what you asked for...
Code:
[table="width: 500"]
[tr]
	[td]Sub MoveLeaverToBottom()
  Dim LastRow As Long
  LastRow = Cells(Rows.Count, "A").End(xlUp).Row
  Application.ScreenUpdating = False
  With Range("A2:A" & LastRow)
    .Replace "Leaver", "=Leaver", xlWhole, , False, , False, False
    On Error GoTo NoLeaver
    Intersect(.SpecialCells(xlFormulas, xlErrors).EntireRow, Columns("A").Resize(, 3)).Copy Cells(LastRow + 1, "A")
    .SpecialCells(xlFormulas).EntireRow.Delete
  End With
  Columns("A").SpecialCells(xlConstants, xlErrors).Value = "Leaver"
NoLeaver:
  Application.ScreenUpdating = True
End Sub[/td]
[/tr]
[/table]
 
Upvote 0
I don't not know if this is the best way (probably not), but here is one way to do what you asked for...
Code:
[TABLE="width: 500"]
<tbody>[TR]
[TD]Sub MoveLeaverToBottom()
  Dim LastRow As Long
  LastRow = Cells(Rows.Count, "A").End(xlUp).Row
  Application.ScreenUpdating = False
  With Range("A2:A" & LastRow)
    .Replace "Leaver", "=Leaver", xlWhole, , False, , False, False
    On Error GoTo NoLeaver
    Intersect(.SpecialCells(xlFormulas, xlErrors).EntireRow, Columns("A").Resize(, 3)).Copy Cells(LastRow + 1, "A")
    .SpecialCells(xlFormulas).EntireRow.Delete
  End With
  Columns("A").SpecialCells(xlConstants, xlErrors).Value = "Leaver"
NoLeaver:
  Application.ScreenUpdating = True
End Sub
[/TD]
[/TR]
</tbody>[/TABLE]

Hi Rick

Ive amended the code slightly so it copies to the last column

Only issue I have is that it shows an error(NAME)ERROR Message where it had the word Leaver where I still need to have that word there

here is the amendedcode
 
Upvote 0
for some reason its not allowing me to copy and paste the code here but all I did was that added a last column variable and in the resize bit change the 3 to lastcol
 
Upvote 0
Only issue I have is that it shows an error(NAME)ERROR Message where it had the word Leaver where I still need to have that word there
Try changing this line of code...

Columns("A").SpecialCells(xlConstants, xlErrors).Value = "Leaver"

to this...

Columns("A").SpecialCells(xlFormulas, xlErrors).Value = "Leaver"
 
Upvote 0

Forum statistics

Threads
1,215,440
Messages
6,124,882
Members
449,193
Latest member
PurplePlop

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top