Copy to first open cell in rowB/sheet 2
Solved/Closed
Related:
- Copy to first open cell in rowB/sheet 2
- Tentacle locker 2 - Download - Adult games
- Five nights in anime 2 - Download - Adult games
- Euro truck simulator 2 download free full version pc - Download - Simulation
- Feeding frenzy 2 download - Download - Arcade
- Sheet right to left in google sheet - Guide
3 responses
TrowaD
Posts
2921
Registration date
Sunday September 12, 2010
Status
Moderator
Last seen
December 27, 2022
555
Apr 8, 2011 at 09:33 AM
Apr 8, 2011 at 09:33 AM
Hi Stormdronk,
Macro's can NOT be undone by hitting the blue arrow. So SAVE your file before running or in this case implementing codes, so you are able to restore your file.
See if this code works for you:
1. Implementing the code:
Right-click on the sheets tab and choose the bottom option called: view code.
Copy/paste the code in the big white field of the new window that should appear.
2. Adjusting the code:
I have used the range ("B2:B10") twice in the code, codeline 3 and 4. This represents the range in which you put the status number. Change this range to match your sheet.
The column next to the status column is used to see whether the row has been copied already or not. This is done by placing a white (so you can't see it) C in it. If you use this column for something else you want to move 1 or more columns to the right so it doesn't affect your data. This done on the 5th line of code:
3. Testing code.
Now for the fun part. When altering you sheet outside the target range (B2:B10), nothing should happen. Otherwise the row with a status 4, which have not been copied before, will be copied to the destination sheet. Which should put a smile on your face :) .
Please do let me know how this is working out for you.
Best regards,
Trowa
Macro's can NOT be undone by hitting the blue arrow. So SAVE your file before running or in this case implementing codes, so you are able to restore your file.
See if this code works for you:
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("B2:B10")) Is Nothing Then Exit Sub Set MR = Range("B2:B10") For Each cell In MR If cell.Value = 4 And cell.Offset(0, 1).Value <> "C" Then cell.EntireRow.Copy Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial cell.Offset(0, 1).Value = "C" cell.Offset(0, 1).Font.ColorIndex = 2 End If Next Application.CutCopyMode = False End Sub
1. Implementing the code:
Right-click on the sheets tab and choose the bottom option called: view code.
Copy/paste the code in the big white field of the new window that should appear.
2. Adjusting the code:
I have used the range ("B2:B10") twice in the code, codeline 3 and 4. This represents the range in which you put the status number. Change this range to match your sheet.
The column next to the status column is used to see whether the row has been copied already or not. This is done by placing a white (so you can't see it) C in it. If you use this column for something else you want to move 1 or more columns to the right so it doesn't affect your data. This done on the 5th line of code:
Offset(0,1)Last this to change is the name of your destination sheet. This is done on the 7th line of code. The name I used is: Sheet2.
3. Testing code.
Now for the fun part. When altering you sheet outside the target range (B2:B10), nothing should happen. Otherwise the row with a status 4, which have not been copied before, will be copied to the destination sheet. Which should put a smile on your face :) .
Please do let me know how this is working out for you.
Best regards,
Trowa
Hi Trowa,
Thanks a lot this works grate!!!!
Just a nother question, is it 1st posible to copy a range and not the entire row? 2nd can the copy be undone if I change the stutus let say back to 3, and last question can the status range be in more than one sheet. My result is in sheet1 and then my status is in multible sheets, let say (B2:B10) in sheet2,3,4 and 5. If their status are 4 then copy them to my result sheet1.
I know this is probably a lot to ask, I appreciate your help!!
Thanks, Henk
Thanks a lot this works grate!!!!
Just a nother question, is it 1st posible to copy a range and not the entire row? 2nd can the copy be undone if I change the stutus let say back to 3, and last question can the status range be in more than one sheet. My result is in sheet1 and then my status is in multible sheets, let say (B2:B10) in sheet2,3,4 and 5. If their status are 4 then copy them to my result sheet1.
I know this is probably a lot to ask, I appreciate your help!!
Thanks, Henk
TrowaD
Posts
2921
Registration date
Sunday September 12, 2010
Status
Moderator
Last seen
December 27, 2022
555
Apr 12, 2011 at 10:43 AM
Apr 12, 2011 at 10:43 AM
Hi Henk,
Glad to see you appreciate the answer.
Let's take a look at your questions:
1 - Yes you can. Replace this line:
cell.EntireRow.Copy
to something like this:
Range(cell.Offset(0, -1), cell.Offset(0, 1)).Copy
This will copy column A to C of the relative row.
2 - This is a tricky one.
3 - To do this you will have to copy the code to the other sheets as well.
Just right-click on the other sheets' tab to implement the code.
I will have to look into question number 2 some more. Unfortunately I'm out of time for today.
So you will have to wait a little more. Do comment on the first and third answers.
Best regards,
Trowa
Glad to see you appreciate the answer.
Let's take a look at your questions:
1 - Yes you can. Replace this line:
cell.EntireRow.Copy
to something like this:
Range(cell.Offset(0, -1), cell.Offset(0, 1)).Copy
This will copy column A to C of the relative row.
2 - This is a tricky one.
3 - To do this you will have to copy the code to the other sheets as well.
Just right-click on the other sheets' tab to implement the code.
I will have to look into question number 2 some more. Unfortunately I'm out of time for today.
So you will have to wait a little more. Do comment on the first and third answers.
Best regards,
Trowa
Hi Trowa
Ok I am impressed, this works perfectly.
Just on the ranges, I opend a new workbook in excel and tested your code and everything works fine, now I need to understand how to change the ranges so it soots my workbook.
Sheet1 is my results sheet, in this sheet a copy all the data from the other sheets.
In sheet 1 I use cells D12:R12 and down, I use the top rows to do culculations in.
in sheets 2,3,4,5.... I use E12:S12 and down, these will copy to sheet 1 as per your coding.
The status cells are In T12 and down in sheets 2,3,4,5....
I Am sorry to ask you this, but I dont understand how the coding of
"Range(cell.Offset(0, -1), cell.Offset(0, 1)).Copy"
gives you the result of A:C .
Thanks Bud you are helping a lot!!!!!!!
Regards, Henk
Ok I am impressed, this works perfectly.
Just on the ranges, I opend a new workbook in excel and tested your code and everything works fine, now I need to understand how to change the ranges so it soots my workbook.
Sheet1 is my results sheet, in this sheet a copy all the data from the other sheets.
In sheet 1 I use cells D12:R12 and down, I use the top rows to do culculations in.
in sheets 2,3,4,5.... I use E12:S12 and down, these will copy to sheet 1 as per your coding.
The status cells are In T12 and down in sheets 2,3,4,5....
I Am sorry to ask you this, but I dont understand how the coding of
"Range(cell.Offset(0, -1), cell.Offset(0, 1)).Copy"
gives you the result of A:C .
Thanks Bud you are helping a lot!!!!!!!
Regards, Henk
TrowaD
Posts
2921
Registration date
Sunday September 12, 2010
Status
Moderator
Last seen
December 27, 2022
555
Apr 14, 2011 at 10:19 AM
Apr 14, 2011 at 10:19 AM
Hi Henk,
In the example I used column B as status column.
Looking at the code line:
Offset(0,-1) means: shift 0 rows down, shift 1column to the left.
Offset(0,-1) means: shift 0 rows down, shift 1column to the right.
So 1 column to the left and 1 column to the right of column B means column A:C.
In your case you are using column T as status column and you want to copy column E:T.
The code line will then look like this:
You didn't asked, so I guess it's clear. But just to be complete, the code line:
you want to paste starting at column D (not column A).
Now the answer for question 2: undo the copy/paste.
I assumed that the cell to the left of the status column (T) is an unique value.
The assumption comes forward on line 4 and 14.
Start by looking at code line 14:
The value of that cell is used to search the result sheet (sheet1). If this is not an unique value then change the offset value so that it targets a column with unique values.
Code line 4:
Change this range when you change the offset value.
Here is the code:
Please feel free to ask away.
I just hope my explanations are clear.
Best regards,
Trowa
In the example I used column B as status column.
Looking at the code line:
Range(cell.Offset(0, -1), cell.Offset(0, 1)).CopyCell refers to the cells in column B.
Offset(0,-1) means: shift 0 rows down, shift 1column to the left.
Offset(0,-1) means: shift 0 rows down, shift 1column to the right.
So 1 column to the left and 1 column to the right of column B means column A:C.
In your case you are using column T as status column and you want to copy column E:T.
The code line will then look like this:
Range(cell.Offset(0, -15),cell).CopyNow cell refers to column T and cell.Offset(0,-15) refers to column E (15 columns to the left of column T.)
You didn't asked, so I guess it's clear. But just to be complete, the code line:
Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecialneeds to be altered into:
Sheets("Sheet1").Range("D" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecialBecause Sheet1 is result sheet (not sheet2) and
you want to paste starting at column D (not column A).
Now the answer for question 2: undo the copy/paste.
I assumed that the cell to the left of the status column (T) is an unique value.
The assumption comes forward on line 4 and 14.
Start by looking at code line 14:
x = cell.Offset(0, -1).Valuecell refers to the status column (T), offset(0,-1) means: look 1 column to the left.
The value of that cell is used to search the result sheet (sheet1). If this is not an unique value then change the offset value so that it targets a column with unique values.
Code line 4:
Set MR2 = Sheets("blad2").Range("R12:R100")is the column used to find the previously mentioned search value.
Change this range when you change the offset value.
Here is the code:
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("T12:T100")) Is Nothing Then Exit Sub Set MR = Range("T12:T100") Set MR2 = Sheets("blad2").Range("R12:R100") For Each cell In MR If cell.Value = 4 And cell.Offset(0, 1).Value <> "C" Then Range(cell.Offset(0, -15), cell).Copy Sheets("Sheet1").Range("D" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial cell.Offset(0, 1).Value = "C" cell.Offset(0, 1).Font.ColorIndex = 2 End If If cell.Value <> 4 And cell.Offset(0, 1).Value = "C" Then cell.Offset(0, 1).ClearContents x = cell.Offset(0, -1).Value End If Next For Each cell In MR2 If cell.Value = x Then Sheets("blad2").Range(cell.Offset(0, -14), cell.Offset(0, 1)).ClearContents End If Next Application.CutCopyMode = False End Sub
Please feel free to ask away.
I just hope my explanations are clear.
Best regards,
Trowa