ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   How do you copy data from one sheet to another using a button (https://www.excelbanter.com/excel-programming/299233-how-do-you-copy-data-one-sheet-another-using-button.html)

Niffer

How do you copy data from one sheet to another using a button
 
Hi I am trying to create a macro that will copy rows from a list o
sheet 1 to sheet 2 based on a specific value (Column M = "Y"). I have
button that moves all Y values to the top of the list. I have code tha
will work with literal ranges. However there may be 1 or 10 rows tha
need to be copied and the next open row on Sheet 2 will be alway
changing.

Worksheets("Sheet 1").Range("A19:D20").Copy _
Destination:=Worksheets("Sheet 2").Range("A10:D11")

I have tried to use calculated variables that will ensure the prope
number of rows will be copied and be copied into the next blank spac
but it won't compile and since this is my first attempt at a macro
cannot figure out how to fix this.

Worksheets("Sheet 1").Range(Cells(19, 1), Cells(test, 4)).Copy _
'Destination:=Worksheets("Sheet 2").Range(Cells(test2, 1), Cells(test3
4))
I am assuming there is a much easier way to do this but I do not have
clue!
Any help would be greatly appreciated : - )
Thanks for your time

--
Message posted from http://www.ExcelForum.com


Nigel[_8_]

How do you copy data from one sheet to another using a button
 
Hi Niffer
Try the following, it uses an autofilter to subset your records, determine
how many records are displayed (where column M) is set to Y, then copies
them into the next available row on sheet 2.
A few assumptions I made:
1. Your data is on sheet1 starts in row1 and uses columns A to M
2. You wish to copy all columns after filtering to required rows
3. I use column M to determine the number of selected rows on sheet1 and
sheet2

Sub SelectiveCopy()
Dim LastRow1 As Long, LastRow2 As Long
Sheets("Sheet1").Activate
Range("A1:M1").AutoFilter
Range("A1:M1").AutoFilter Field:=13, Criteria1:="Y"
LastRow1 = Worksheets(1).Cells(Rows.Count, "M").End(xlUp).Row
LastRow2 = Worksheets(2).Cells(Rows.Count, "M").End(xlUp).Row
Range("A1:M" & LastRow1).Copy Destination:=Sheets(2).Range("A" &
LastRow2)
Range("A1:M1").AutoFilter
End Sub

Cheers
Nigel


"Niffer " wrote in message
...
Hi I am trying to create a macro that will copy rows from a list on
sheet 1 to sheet 2 based on a specific value (Column M = "Y"). I have a
button that moves all Y values to the top of the list. I have code that
will work with literal ranges. However there may be 1 or 10 rows that
need to be copied and the next open row on Sheet 2 will be always
changing.

Worksheets("Sheet 1").Range("A19:D20").Copy _
Destination:=Worksheets("Sheet 2").Range("A10:D11")

I have tried to use calculated variables that will ensure the proper
number of rows will be copied and be copied into the next blank space
but it won't compile and since this is my first attempt at a macro I
cannot figure out how to fix this.

Worksheets("Sheet 1").Range(Cells(19, 1), Cells(test, 4)).Copy _
'Destination:=Worksheets("Sheet 2").Range(Cells(test2, 1), Cells(test3,
4))
I am assuming there is a much easier way to do this but I do not have a
clue!
Any help would be greatly appreciated : - )
Thanks for your time!


---
Message posted from http://www.ExcelForum.com/




Bob Phillips[_6_]

How do you copy data from one sheet to another using a button
 
There doesn't seem to be anything wrong with that approach. I don't know
what all of the variables refer to/from, but here is a way to calculate the
size of the range and copy it

For i = 1 To Cells(Rows.Count,"M").End(xlUp).Row
If Cells(i,"M").Value < "M" Then
Exit For
End If
Next i

Worksheets("Sheet 1").Range("A!:D" & i-1).Copy _
Destination:=Worksheets("Sheet 2").Range("A1")

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"Niffer " wrote in message
...
Hi I am trying to create a macro that will copy rows from a list on
sheet 1 to sheet 2 based on a specific value (Column M = "Y"). I have a
button that moves all Y values to the top of the list. I have code that
will work with literal ranges. However there may be 1 or 10 rows that
need to be copied and the next open row on Sheet 2 will be always
changing.

Worksheets("Sheet 1").Range("A19:D20").Copy _
Destination:=Worksheets("Sheet 2").Range("A10:D11")

I have tried to use calculated variables that will ensure the proper
number of rows will be copied and be copied into the next blank space
but it won't compile and since this is my first attempt at a macro I
cannot figure out how to fix this.

Worksheets("Sheet 1").Range(Cells(19, 1), Cells(test, 4)).Copy _
'Destination:=Worksheets("Sheet 2").Range(Cells(test2, 1), Cells(test3,
4))
I am assuming there is a much easier way to do this but I do not have a
clue!
Any help would be greatly appreciated : - )
Thanks for your time!


---
Message posted from http://www.ExcelForum.com/





All times are GMT +1. The time now is 02:17 PM.

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