ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Move non date/add blank row (https://www.excelbanter.com/excel-programming/289282-move-non-date-add-blank-row.html)

Annette[_3_]

Move non date/add blank row
 
How can I programmically write, if a number is found in column 1 (A) that is
not a date, move over two columns and drop in column 3 (C).

Then the next step after looping the above is to insert a blank row above
each date found in column 1 (A) for all dates found.

Thanks.

Annette



Dave Peterson[_3_]

Move non date/add blank row
 
One way:

Option Explicit
Sub testme()

Dim myCell As Range
Dim myRng As Range
Dim myInsertRng As Range
Dim wks As Worksheet

Set wks = ActiveSheet

With wks
Set myRng = .Range("a1", .Cells(.Rows.Count, "A").End(xlUp))

For Each myCell In myRng.Cells
With myCell
If IsNumeric(.Value) Then
.Offset(0, 2).Value = .Value
.ClearContents
ElseIf IsDate(.Value) Then
If myInsertRng Is Nothing Then
Set myInsertRng = .Cells
Else
Set myInsertRng = Union(.Cells, myInsertRng)
End If
End If
End With
Next myCell
If myInsertRng Is Nothing Then
'do nothing
Else
myInsertRng.EntireRow.Insert
End If
End With

End Sub

But you may want to reconsider inserting that row. I find just making the
rowheight twice as big looks just as nice and it makes subsequent processing a
lot easier.

I'd do it this way:

Option Explicit
Sub testme()

Dim myCell As Range
Dim myRng As Range
Dim myInsertRng As Range

Dim wks As Worksheet

Set wks = ActiveSheet

With wks
Set myRng = .Range("a1", .Cells(.Rows.Count, "A").End(xlUp))

For Each myCell In myRng.Cells
With myCell
If IsNumeric(.Value) Then
.Offset(0, 2).Value = .Value
.ClearContents
ElseIf IsDate(.Value) Then
.RowHeight = .RowHeight * 2
End If
End With
Next myCell
End With

End Sub



Annette wrote:

How can I programmically write, if a number is found in column 1 (A) that is
not a date, move over two columns and drop in column 3 (C).

Then the next step after looping the above is to insert a blank row above
each date found in column 1 (A) for all dates found.

Thanks.

Annette


--

Dave Peterson


Annette[_3_]

Move non date/add blank row
 
Dave, the first part is great and is going to be used. I pulled off the
second part because we changed in the middle of the game and decided we
needed to delete all the blank rows left behind that contained no data. I
found a code in the newgroup that will satisfy the 'delete rows' written by
a fellow, Ron de Bruin. All the information I'm dealing with is mainframe
text copied over into the Excel that had to be presented to user in a
workable format. By removing all empty rows, the users can then use filter
and we felt this was a better method. Column C contains a couple rows of
text wherein the associated information found in Col A and B is only the
first line. When the text came over from the mainframe, extra lines were
added sporatically. Sometimes text from what should be column C would shift
and that's the code you wrote. Thanks for the code as it really does the
trick.
"Dave Peterson" wrote in message
...
One way:

Option Explicit
Sub testme()

Dim myCell As Range
Dim myRng As Range
Dim myInsertRng As Range
Dim wks As Worksheet

Set wks = ActiveSheet

With wks
Set myRng = .Range("a1", .Cells(.Rows.Count, "A").End(xlUp))

For Each myCell In myRng.Cells
With myCell
If IsNumeric(.Value) Then
.Offset(0, 2).Value = .Value
.ClearContents
ElseIf IsDate(.Value) Then
If myInsertRng Is Nothing Then
Set myInsertRng = .Cells
Else
Set myInsertRng = Union(.Cells, myInsertRng)
End If
End If
End With
Next myCell
If myInsertRng Is Nothing Then
'do nothing
Else
myInsertRng.EntireRow.Insert
End If
End With

End Sub

But you may want to reconsider inserting that row. I find just making the
rowheight twice as big looks just as nice and it makes subsequent

processing a
lot easier.

I'd do it this way:

Option Explicit
Sub testme()

Dim myCell As Range
Dim myRng As Range
Dim myInsertRng As Range

Dim wks As Worksheet

Set wks = ActiveSheet

With wks
Set myRng = .Range("a1", .Cells(.Rows.Count, "A").End(xlUp))

For Each myCell In myRng.Cells
With myCell
If IsNumeric(.Value) Then
.Offset(0, 2).Value = .Value
.ClearContents
ElseIf IsDate(.Value) Then
.RowHeight = .RowHeight * 2
End If
End With
Next myCell
End With

End Sub



Annette wrote:

How can I programmically write, if a number is found in column 1 (A)

that is
not a date, move over two columns and drop in column 3 (C).

Then the next step after looping the above is to insert a blank row

above
each date found in column 1 (A) for all dates found.

Thanks.

Annette


--

Dave Peterson





All times are GMT +1. The time now is 01:14 PM.

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