View Full Version : [SOLVED:] Copying to another sheet.
rdelosh74
07-11-2014, 11:41 AM
Need help on this please:
In a workbook, starting on sheet 5, going to the last sheet in the workbook (it can be any number of sheets).
Starting on row 4, if there is a value in Column T, U or V then copy the entire row to a new sheet at the end of the workbook (starting on row 4). And have that sheet called, "Totals".
Thank you.
mancubus
07-11-2014, 01:37 PM
Try
Sub copy_data_from_sheets_5_to_n()
Dim ws As Worksheet
Dim i As Long, j As Long, LastRow As Long
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With
On Error Resume Next
For Each ws In Worksheets
If UCase(ws.Name) = "TOTALS" Then ws.Delete
Next ws
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Totals"
For i = 5 To Worksheets.Count - 1
With Worksheets(i)
LastRow = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
For j = 4 To LastRow
If Application.CountA(.Range("T" & j & ":V" & j)) > 0 Then
.Rows(j).Copy Worksheets("Totals").Range("A" & Rows.Count).End(xlUp).Offset(1)
End If
Next j
End With
Next i
End Sub
rdelosh74
07-14-2014, 08:37 AM
Doesn't work correctly. I have added a file showing the final output how it should look. Notice there are hidden columns.
11950
Thanks for the attempt.
mancubus
07-14-2014, 12:11 PM
actually it will work for the requirement in your first message. with well designed worksheets, of course.
the workbook you posted tells me you want to copy columns A-V to totals.
Sub copy_data_from_sheets_5_to_n()
Dim ws As Worksheet
Dim i As Long, j As Long, LastRow As Long, LRTotals As Long
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With
On Error Resume Next
For Each ws In Worksheets
If UCase(ws.Name) = "TOTALS" Then ws.Delete
Next ws
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Totals"
LRTotals = 4
For i = 5 To Worksheets.Count - 1
With Worksheets(i)
LastRow = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
For j = 4 To LastRow
If Application.CountA(.Range("T" & j & ":V" & j)) > 0 Then
.Range("A" & j & ":V" & j).Copy Worksheets("Totals").Range("A" & LRTotals)
LRTotals = Worksheets("Totals").Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1
End If
Next j
End With
Next i
End Sub
rdelosh74
07-14-2014, 12:30 PM
That worked perfectly. Thank you.
mancubus
07-14-2014, 02:57 PM
you are welcome.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.