Code does not work

J

Jerry Foley

for the following macro, I want it to seach column 'c' in all sheets except
sheet4. If there is a numeric value in col 'c' of any of the worksheets in
the workbook, I want to copy the entire row to sheet 4. The code I have
written will also copy rows of data that fall between the rows that have data
in col 'c'. Help...
Sub numbers()

Dim ws As Worksheet, cell As Range, rng As Range

For Each ws In ThisWorkbook.Worksheets
If Not ws.Name = "Sheet4" Then
For Each cell In ws.Range("c1:c" & ws.Range("c65536").End(xlUp).Row)
If IsNumeric(cell.Offset(0, 2).Value) Then
cell.EntireRow.Copy _
Sheets("Sheet4").Range("A65536").End(xlUp).Offset(1, 0)
End If
Next cell
End If
Next ws

End Sub
 
T

Tim Williams

Try to stay in the same thread if possible...

My suggestions were either or : you have included both, so now you're checking Column E (C, then 2 to the right).
 
J

Jerry Foley

Thnaks Tim, I am confused however...what exact changes shoul dbe made to the
code in the thread to get my desired results? C is the only column I want to
seach in each sheet. Thanks
 
D

Dave Peterson

This line:

If IsNumeric(cell.Offset(0, 2).Value) Then
checks to see if the cell 2 columns to the right of column C is numeric.

Maybe just:
If IsNumeric(cell.Value) Then
(to stay in column C)

But be careful. An empty cell will be treated as numeric by excel.

If that's not ok, you could use:
If application.isnumber(cell.Value) Then

or check a couple of things:

if isempty(cell.value) then
'don't do it
elseIf IsNumeric(cell.Value) Then
'do the copy
end if
 
T

Tim Williams

Sub numbers()

Dim ws As Worksheet, cell As Range, rng As Range

For Each ws In ThisWorkbook.Worksheets
If Not ws.Name = "Sheet4" Then

Set rng = ws.Range("C1:C" & ws.Range("C65536").End(xlUp).Row)

For Each cell In rng
If cell.Value <> "" and IsNumeric(cell.Value) Then
cell.EntireRow.Copy _
Sheets("Sheet4").Range("A65536").End(xlUp).Offset(1, 0)
End If
Next cell
End If
Next ws

End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top