ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Loop with dynamic range (https://www.excelbanter.com/excel-programming/346030-loop-dynamic-range.html)

mthomas[_19_]

Loop with dynamic range
 

Need to do the following:

Example:
Assuming Loop finds The first populated cell at A8
If A8 < "" Then
variable = B8.value
For each cell below A8 that = ""
Each cell below B8 = variable
Until A < ""
Continue Loop from NEXT CELL < ""

My code so far, which works except for iterating down the column.

Dim i2
For Each i2 In Range([profile!C1], [profile!C1].End(xlDown))
If i2.Offset(0, -2) < "" Then
Dim empID
empID = i2.Offset(0, -1).Value
If i2.Offset(1, -2) = "" Then
i2.Offset(1, -1) = empID
End If
End If
Next

Thanks again everyone!


--
mthomas
------------------------------------------------------------------------
mthomas's Profile: http://www.excelforum.com/member.php...o&userid=25649
View this thread: http://www.excelforum.com/showthread...hreadid=486450


mthomas[_20_]

Loop with dynamic range
 

Just following up on this everyone. See original post. Thanks!


--
mthomas
------------------------------------------------------------------------
mthomas's Profile: http://www.excelforum.com/member.php...o&userid=25649
View this thread: http://www.excelforum.com/showthread...hreadid=486450


Tom Ogilvy

Loop with dynamic range
 
This might work.

Sub FillInData()
Dim rng As Range, rng1 As Range
Dim rng4 As Range, rng2 As Range
With Worksheets("Profile")
Set rng4 = .Cells(1, 3)
If IsEmpty(rng4) Then _
Set rng4 = rng4.End(xlDown)
Set rng = .Range(rng4, _
.Cells(Rows.Count, 3).End(xlUp))
End With
Set rng1 = rng.Offset(0, -2)
On Error Resume Next
Set rng2 = rng1.SpecialCells(xlBlanks)
On Error GoTo 0
If Not rng2 Is Nothing Then
rng2.Formula = "=" & rng2(1).Offset(-1, 0).Address(0, 0)
rng1.Formula = rng1.Value
End If
End Sub

--
Regards,
Tom Ogilvy





"mthomas" wrote in
message ...

Need to do the following:

Example:
Assuming Loop finds The first populated cell at A8
If A8 < "" Then
variable = B8.value
For each cell below A8 that = ""
Each cell below B8 = variable
Until A < ""
Continue Loop from NEXT CELL < ""

My code so far, which works except for iterating down the column.

Dim i2
For Each i2 In Range([profile!C1], [profile!C1].End(xlDown))
If i2.Offset(0, -2) < "" Then
Dim empID
empID = i2.Offset(0, -1).Value
If i2.Offset(1, -2) = "" Then
i2.Offset(1, -1) = empID
End If
End If
Next

Thanks again everyone!


--
mthomas
------------------------------------------------------------------------
mthomas's Profile:

http://www.excelforum.com/member.php...o&userid=25649
View this thread: http://www.excelforum.com/showthread...hreadid=486450




mthomas[_22_]

Loop with dynamic range
 

Thanks Tom so much for your reply. I'm getting the following error
message:

"Application-defined or Object-defined error"

The line of code is:

rng2.Formula = "=" & rng2(1).Offset(-1, 0).Address(0, 0)


Thanks again for everything!


--
mthomas
------------------------------------------------------------------------
mthomas's Profile: http://www.excelforum.com/member.php...o&userid=25649
View this thread: http://www.excelforum.com/showthread...hreadid=486450


Chip Pearson

Loop with dynamic range
 
What celll is rng2 set to? You'll get an error if rng2 is
referencing a cell in row 1.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com


"mthomas"
wrote in message
...

Thanks Tom so much for your reply. I'm getting the following
error
message:

"Application-defined or Object-defined error"

The line of code is:

rng2.Formula = "=" & rng2(1).Offset(-1, 0).Address(0, 0)


Thanks again for everything!


--
mthomas
------------------------------------------------------------------------
mthomas's Profile:
http://www.excelforum.com/member.php...o&userid=25649
View this thread:
http://www.excelforum.com/showthread...hreadid=486450




mthomas[_24_]

Loop with dynamic range
 

Tom and Chip, I used the following code and it works great. I just
needed to use "C" for the lastrow and I will use a prompt for the user
to enter the row that the code will start in. Thanks for everything!

Sub AddEmployeeNumber()
Dim lastrow As Long, r As Long
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For r = 3 To lastrow
If Cells(r, 1) = "" Then Cells(r, 2) = Cells(r - 1, 2)
Next r
End Sub


--
mthomas
------------------------------------------------------------------------
mthomas's Profile: http://www.excelforum.com/member.php...o&userid=25649
View this thread: http://www.excelforum.com/showthread...hreadid=486450


Tom Ogilvy

Loop with dynamic range
 
Your sample code was working in column C, but your later post and the
original talk about column B. It it is actually column B:

Sub FillInData()
Dim rng As Range, rng1 As Range
Dim rng4 As Range, rng2 As Range
With Worksheets("Profile")
Set rng4 = .Cells(1, 2)
If IsEmpty(rng4) Then _
Set rng4 = rng4.End(xlDown)
Set rng = .Range(rng4, _
.Cells(Rows.Count, 2).End(xlUp))
End With
Set rng1 = rng.Offset(0, -1)
On Error Resume Next
Set rng2 = rng1.SpecialCells(xlBlanks)
On Error GoTo 0
If Not rng2 Is Nothing Then
rng2.Formula = "=" & rng2(1).Offset(-1, 0).Address(0, 0)
rng1.Formula = rng1.Value
End If
End Sub

--
Regards,
Tom Ogilvy


"mthomas" wrote in
message ...

Thanks Tom so much for your reply. I'm getting the following error
message:

"Application-defined or Object-defined error"

The line of code is:

rng2.Formula = "=" & rng2(1).Offset(-1, 0).Address(0, 0)


Thanks again for everything!


--
mthomas
------------------------------------------------------------------------
mthomas's Profile:

http://www.excelforum.com/member.php...o&userid=25649
View this thread: http://www.excelforum.com/showthread...hreadid=486450




Tom Ogilvy

Loop with dynamic range
 
Never mind, I misunderstood your description of what you wanted filled in.

the code could be easily fixed, but your happy with the looping approach, so
no sense in it.

--
Regards,
Tom Ogilvy


"Tom Ogilvy" wrote in message
...
Your sample code was working in column C, but your later post and the
original talk about column B. It it is actually column B:

Sub FillInData()
Dim rng As Range, rng1 As Range
Dim rng4 As Range, rng2 As Range
With Worksheets("Profile")
Set rng4 = .Cells(1, 2)
If IsEmpty(rng4) Then _
Set rng4 = rng4.End(xlDown)
Set rng = .Range(rng4, _
.Cells(Rows.Count, 2).End(xlUp))
End With
Set rng1 = rng.Offset(0, -1)
On Error Resume Next
Set rng2 = rng1.SpecialCells(xlBlanks)
On Error GoTo 0
If Not rng2 Is Nothing Then
rng2.Formula = "=" & rng2(1).Offset(-1, 0).Address(0, 0)
rng1.Formula = rng1.Value
End If
End Sub

--
Regards,
Tom Ogilvy


"mthomas" wrote in
message ...

Thanks Tom so much for your reply. I'm getting the following error
message:

"Application-defined or Object-defined error"

The line of code is:

rng2.Formula = "=" & rng2(1).Offset(-1, 0).Address(0, 0)


Thanks again for everything!


--
mthomas
------------------------------------------------------------------------
mthomas's Profile:

http://www.excelforum.com/member.php...o&userid=25649
View this thread:

http://www.excelforum.com/showthread...hreadid=486450







All times are GMT +1. The time now is 05:16 PM.

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