ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Copy, Paste then delete (https://www.excelbanter.com/excel-programming/325839-copy-paste-then-delete.html)

Louise

Copy, Paste then delete
 
Hello
I have a data sheet that has sorted values in ColA:D. For each line on the
list I would like to compare the values in ColB and ColD to the values in the
next line. If B1=B2 and D1<D@ then I would like to copy A2:D2 to E1:H1 and
then delete Row2.
Example

Dog 123456 Blue 500
Dog 123456 Red 400
Dog 234123 Blue 500
Dog 234123 Blue 500

Would become:
Dog 123456 Blue 500 Dog 123456 Red 400
Dog 234123 Blue 500
Dog 234123 Blue 500

Thanks for all replies
Louise




Rowan[_2_]

Copy, Paste then delete
 
This works for me. Save your data before testing.

Sub MoveData()

Range("A2").Select
Do Until ActiveCell.Value = Empty
If ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(1, 1).Value _
And ActiveCell.Offset(0, 3).Value < ActiveCell.Offset(1,
3).Value Then
ActiveCell.Offset(0, 4).Value = ActiveCell.Offset(1, 0).Value
ActiveCell.Offset(0, 5).Value = ActiveCell.Offset(1, 1).Value
ActiveCell.Offset(0, 6).Value = ActiveCell.Offset(1, 2).Value
ActiveCell.Offset(0, 7).Value = ActiveCell.Offset(1, 3).Value
ActiveCell.Offset(1, 0).EntireRow.Delete
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop

End Sub

Regards
Rowan

"Louise" wrote:

Hello
I have a data sheet that has sorted values in ColA:D. For each line on the
list I would like to compare the values in ColB and ColD to the values in the
next line. If B1=B2 and D1<D@ then I would like to copy A2:D2 to E1:H1 and
then delete Row2.
Example

Dog 123456 Blue 500
Dog 123456 Red 400
Dog 234123 Blue 500
Dog 234123 Blue 500

Would become:
Dog 123456 Blue 500 Dog 123456 Red 400
Dog 234123 Blue 500
Dog 234123 Blue 500

Thanks for all replies
Louise




Rowan[_2_]

Copy, Paste then delete
 
Lookout for the wrapping of line 4. Should be more like

Sub MoveData()

Range("A2").Select
Do Until ActiveCell.Value = Empty
If ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(1, 1).Value _
And ActiveCell.Offset(0, 3).Value < ActiveCell.Offset(1, 3).Value Then
ActiveCell.Offset(0, 4).Value = ActiveCell.Offset(1, 0).Value
ActiveCell.Offset(0, 5).Value = ActiveCell.Offset(1, 1).Value
ActiveCell.Offset(0, 6).Value = ActiveCell.Offset(1, 2).Value
ActiveCell.Offset(0, 7).Value = ActiveCell.Offset(1, 3).Value
ActiveCell.Offset(1, 0).EntireRow.Delete
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop

End Sub

Regards
Rowan

"Rowan" wrote:

This works for me. Save your data before testing.

Sub MoveData()

Range("A2").Select
Do Until ActiveCell.Value = Empty
If ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(1, 1).Value _
And ActiveCell.Offset(0, 3).Value < ActiveCell.Offset(1,
3).Value Then
ActiveCell.Offset(0, 4).Value = ActiveCell.Offset(1, 0).Value
ActiveCell.Offset(0, 5).Value = ActiveCell.Offset(1, 1).Value
ActiveCell.Offset(0, 6).Value = ActiveCell.Offset(1, 2).Value
ActiveCell.Offset(0, 7).Value = ActiveCell.Offset(1, 3).Value
ActiveCell.Offset(1, 0).EntireRow.Delete
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop

End Sub

Regards
Rowan

"Louise" wrote:

Hello
I have a data sheet that has sorted values in ColA:D. For each line on the
list I would like to compare the values in ColB and ColD to the values in the
next line. If B1=B2 and D1<D@ then I would like to copy A2:D2 to E1:H1 and
then delete Row2.
Example

Dog 123456 Blue 500
Dog 123456 Red 400
Dog 234123 Blue 500
Dog 234123 Blue 500

Would become:
Dog 123456 Blue 500 Dog 123456 Red 400
Dog 234123 Blue 500
Dog 234123 Blue 500

Thanks for all replies
Louise





All times are GMT +1. The time now is 04:14 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com