ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Creating a range name based on cell content not being a negative value. (https://www.excelbanter.com/excel-programming/378301-creating-range-name-based-cell-content-not-being-negative-value.html)

burl_h

Creating a range name based on cell content not being a negative value.
 
The following code creates a range name called Cost1 on column F, the
range obviously starts at F2 with it's ending point defined as the last
cell in column F that is not a negative value.
The data in column F is sorted such that all the negative values are at
the bottom (sorted in ascending order) and all values greater than zero
are above the negative values, the positive values are sorted in
ascending order.

Example data
12
56
78
97
101
(59)
(53)
(34)

So long as the data is presented per the above sample the macro works
fine, the named range starts at F2 and ends at the last positive value.

I have 2 questions:-
1. how would you re-write the code assuming that column F is sorted in
desending order.
example:
101
97
78
56
12
(34)
(53)
(59)

2. how would you re-write the code assumng that column F is sorted in
desending order, but then the positive values in column F are in some
random order based on a sort to a different column.
example:
78
12
101
97
56
(34)
(53)
(59)
Sub Tester()

Dim Start As Range
Dim cell As Range
Dim vVal As Variant
Set Start = Range("f2")
vVal = Start.Value
For Each cell In Range(Cells(1, 6), Cells(1, 6).End(xlDown)(2))
If cell.Value < vVal Then
Range(Start, cell.Offset(-1, 0)).Name = "Cost1"
Set Start = cell
vVal = Start.Value
End If
Next

End Sub

burl_h


Gary Keramidas

Creating a range name based on cell content not being a negative value.
 

maybe something like this, as long as negative numbers are always below the
positive ones.

Sub tester()

Dim cell As Range
Dim lastrow As Long, rng As Range
lastrow = Cells(Rows.Count, "F").End(xlUp).Row
Set rng = Range("F2:F" & lastrow)

For Each cell In rng
If cell.Value < 0 Then
Range("F2:F" & cell.Row).Offset(-1, 0).Name = "Cost1"
Exit Sub
End If
Next

End Sub


--


Gary


"burl_h" wrote in message
ups.com...
The following code creates a range name called Cost1 on column F, the
range obviously starts at F2 with it's ending point defined as the last
cell in column F that is not a negative value.
The data in column F is sorted such that all the negative values are at
the bottom (sorted in ascending order) and all values greater than zero
are above the negative values, the positive values are sorted in
ascending order.

Example data
12
56
78
97
101
(59)
(53)
(34)

So long as the data is presented per the above sample the macro works
fine, the named range starts at F2 and ends at the last positive value.

I have 2 questions:-
1. how would you re-write the code assuming that column F is sorted in
desending order.
example:
101
97
78
56
12
(34)
(53)
(59)

2. how would you re-write the code assumng that column F is sorted in
desending order, but then the positive values in column F are in some
random order based on a sort to a different column.
example:
78
12
101
97
56
(34)
(53)
(59)
Sub Tester()

Dim Start As Range
Dim cell As Range
Dim vVal As Variant
Set Start = Range("f2")
vVal = Start.Value
For Each cell In Range(Cells(1, 6), Cells(1, 6).End(xlDown)(2))
If cell.Value < vVal Then
Range(Start, cell.Offset(-1, 0)).Name = "Cost1"
Set Start = cell
vVal = Start.Value
End If
Next

End Sub

burl_h




Gary Keramidas

Creating a range name based on cell content not being a negative value.
 
forgot to mention that you should qualify the ranges with the worksheet name,
too.

--


Gary


"burl_h" wrote in message
ups.com...
The following code creates a range name called Cost1 on column F, the
range obviously starts at F2 with it's ending point defined as the last
cell in column F that is not a negative value.
The data in column F is sorted such that all the negative values are at
the bottom (sorted in ascending order) and all values greater than zero
are above the negative values, the positive values are sorted in
ascending order.

Example data
12
56
78
97
101
(59)
(53)
(34)

So long as the data is presented per the above sample the macro works
fine, the named range starts at F2 and ends at the last positive value.

I have 2 questions:-
1. how would you re-write the code assuming that column F is sorted in
desending order.
example:
101
97
78
56
12
(34)
(53)
(59)

2. how would you re-write the code assumng that column F is sorted in
desending order, but then the positive values in column F are in some
random order based on a sort to a different column.
example:
78
12
101
97
56
(34)
(53)
(59)
Sub Tester()

Dim Start As Range
Dim cell As Range
Dim vVal As Variant
Set Start = Range("f2")
vVal = Start.Value
For Each cell In Range(Cells(1, 6), Cells(1, 6).End(xlDown)(2))
If cell.Value < vVal Then
Range(Start, cell.Offset(-1, 0)).Name = "Cost1"
Set Start = cell
vVal = Start.Value
End If
Next

End Sub

burl_h




burl_h

Creating a range name based on cell content not being a negative value.
 
Gary,

The solution works fine, however the range name now starts at F1, it
should really start at F2, any suggestions?

burl_h

Gary Keramidas wrote:
forgot to mention that you should qualify the ranges with the worksheet name,
too.

--


Gary


"burl_h" wrote in message
ups.com...
The following code creates a range name called Cost1 on column F, the
range obviously starts at F2 with it's ending point defined as the last
cell in column F that is not a negative value.
The data in column F is sorted such that all the negative values are at
the bottom (sorted in ascending order) and all values greater than zero
are above the negative values, the positive values are sorted in
ascending order.

Example data
12
56
78
97
101
(59)
(53)
(34)

So long as the data is presented per the above sample the macro works
fine, the named range starts at F2 and ends at the last positive value.

I have 2 questions:-
1. how would you re-write the code assuming that column F is sorted in
desending order.
example:
101
97
78
56
12
(34)
(53)
(59)

2. how would you re-write the code assumng that column F is sorted in
desending order, but then the positive values in column F are in some
random order based on a sort to a different column.
example:
78
12
101
97
56
(34)
(53)
(59)
Sub Tester()

Dim Start As Range
Dim cell As Range
Dim vVal As Variant
Set Start = Range("f2")
vVal = Start.Value
For Each cell In Range(Cells(1, 6), Cells(1, 6).End(xlDown)(2))
If cell.Value < vVal Then
Range(Start, cell.Offset(-1, 0)).Name = "Cost1"
Set Start = cell
vVal = Start.Value
End If
Next

End Sub

burl_h



burl_h

Creating a range name based on cell content not being a negative value.
 
Gary,

The solution works fine, however the range name now starts at F1, it
should really start at F2, any suggestions?

burl_h

Gary Keramidas wrote:
forgot to mention that you should qualify the ranges with the worksheet name,
too.

--


Gary


"burl_h" wrote in message
ups.com...
The following code creates a range name called Cost1 on column F, the
range obviously starts at F2 with it's ending point defined as the last
cell in column F that is not a negative value.
The data in column F is sorted such that all the negative values are at
the bottom (sorted in ascending order) and all values greater than zero
are above the negative values, the positive values are sorted in
ascending order.

Example data
12
56
78
97
101
(59)
(53)
(34)

So long as the data is presented per the above sample the macro works
fine, the named range starts at F2 and ends at the last positive value.

I have 2 questions:-
1. how would you re-write the code assuming that column F is sorted in
desending order.
example:
101
97
78
56
12
(34)
(53)
(59)

2. how would you re-write the code assumng that column F is sorted in
desending order, but then the positive values in column F are in some
random order based on a sort to a different column.
example:
78
12
101
97
56
(34)
(53)
(59)
Sub Tester()

Dim Start As Range
Dim cell As Range
Dim vVal As Variant
Set Start = Range("f2")
vVal = Start.Value
For Each cell In Range(Cells(1, 6), Cells(1, 6).End(xlDown)(2))
If cell.Value < vVal Then
Range(Start, cell.Offset(-1, 0)).Name = "Cost1"
Set Start = cell
vVal = Start.Value
End If
Next

End Sub

burl_h



Gary Keramidas

Creating a range name based on cell content not being a negative value.
 
try this

Sub tester()

Dim cell As Range
Dim lastrow As Long, rng As Range
lastrow = Cells(Rows.Count, "F").End(xlUp).Row
Set rng = Range("F2:F" & lastrow)

For Each cell In rng
If cell.Value < 0 Then
Range("F2:F" & cell.Row - 1).Name = "Cost1"
Exit Sub
End If
Next

End Sub



--


Gary


"burl_h" wrote in message
ups.com...
Gary,

The solution works fine, however the range name now starts at F1, it
should really start at F2, any suggestions?

burl_h

Gary Keramidas wrote:
forgot to mention that you should qualify the ranges with the worksheet name,
too.

--


Gary


"burl_h" wrote in message
ups.com...
The following code creates a range name called Cost1 on column F, the
range obviously starts at F2 with it's ending point defined as the last
cell in column F that is not a negative value.
The data in column F is sorted such that all the negative values are at
the bottom (sorted in ascending order) and all values greater than zero
are above the negative values, the positive values are sorted in
ascending order.

Example data
12
56
78
97
101
(59)
(53)
(34)

So long as the data is presented per the above sample the macro works
fine, the named range starts at F2 and ends at the last positive value.

I have 2 questions:-
1. how would you re-write the code assuming that column F is sorted in
desending order.
example:
101
97
78
56
12
(34)
(53)
(59)

2. how would you re-write the code assumng that column F is sorted in
desending order, but then the positive values in column F are in some
random order based on a sort to a different column.
example:
78
12
101
97
56
(34)
(53)
(59)
Sub Tester()

Dim Start As Range
Dim cell As Range
Dim vVal As Variant
Set Start = Range("f2")
vVal = Start.Value
For Each cell In Range(Cells(1, 6), Cells(1, 6).End(xlDown)(2))
If cell.Value < vVal Then
Range(Start, cell.Offset(-1, 0)).Name = "Cost1"
Set Start = cell
vVal = Start.Value
End If
Next

End Sub

burl_h






All times are GMT +1. The time now is 10:34 AM.

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