Selected Answer
The following is a slight modification of John's suggestion. The difference is that my suggestion only deals with columns B & C on the BUYING & SELLING sheet and only copies columns B & E on the PURCHASE sheet.
>> updated 12/1 as recommended by John
>> updated 12/1 - added line of code so first paste of data row2 and each subsequent run of the macro leaves a blank row between each data set; revised file attached.
Sub n()
Dim lr As Long
Application.ScreenUpdating = False
' uncomment the following 7 lines to delete existing data
' With Sheets("BUYING & SELLING")
' ' clear target columns (B & C)
' lr = .Range("B" & .Rows.Count).End(xlUp).Row
' .Range("B2:B" & lr).Clear
' lr = .Range("C" & .Rows.Count).End(xlUp).Row
' .Range("C2:C" & lr).Clear
' End With
' copy source data
lr = Sheets("PURCHASE").Range("B" & Rows.Count).End(xlUp).Row
Sheets("PURCHASE").Range("B2:B" & lr).Copy
lr = Sheets("BUYING & SELLING").Range("B" & Rows.Count).End(xlUp).Row
If lr <> 1 Then lr = lr + 1 ' this line will cause there to be an empty row between each data set
Sheets("BUYING & SELLING").Range("B" & lr + 1).PasteSpecial Paste:=xlPasteValues
lr = Sheets("PURCHASE").Range("E" & Rows.Count).End(xlUp).Row
Sheets("PURCHASE").Range("E2:E" & lr).Copy
lr = Sheets("BUYING & SELLING").Range("C" & Rows.Count).End(xlUp).Row
If lr <> 1 Then lr = lr + 1 ' this line will cause there to be an empty row between each data set
Sheets("BUYING & SELLING").Range("C" & lr + 1).PasteSpecial Paste:=xlPasteValues
Sheets("BUYING & SELLING").Activate
Range("A" & lr).Select
Application.ScreenUpdating = True
' remove copy dotted lines
Application.CutCopyMode = False
End Sub
'
'
Cheers :-)