Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I'm sure I'm missing something simple.... I seem to be missunderstanding how
to create the range I need. I also may be trying to be too efficient with my use of the range so, maybe I need to consider that. I'm trying to gather unique values from a column of data, and sort it before I put it into another area of the WS. I have a named range "AcctList" RefersTo: $M$30:$M$160 I have a function Last that will find the last row number that has data within the range passed in. So I want to take the Range("AcctList") and create a new range that contains cells from the beginning of "AcctList" to the last row determined by my function Last. I currently have this: Set currRange = ActiveSheet.Range("AcctList") AccountLastRow = Last(1, currRange) If AccountLastRow <= 0 Then Exit Function ' no data in range. Set currRange2 = ActiveSheet.Range(currRange.Cells(1), currRange.Cells(AccountLastRow)) But if AccountLastRow is 31, then the range is $M30:M60. What is the correct way to use that AccountLastRow to specifiy the range? Once I have this range, I already have the Unique and sort functions complete. Thanks, John S. |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
The below will give you the last entry in M starting from 29
lngLastrow = ActiveSheet.Cells(29, "M").End(xlDown).Row OR The below will give you the row number of the first entry starting from 161 upwards lngLastrow = ActiveSheet.Cells(161, "M").End(xlUp).Row Adjust to suit If this post helps click Yes --------------- Jacob Skaria "DocBrown" wrote: I'm sure I'm missing something simple.... I seem to be missunderstanding how to create the range I need. I also may be trying to be too efficient with my use of the range so, maybe I need to consider that. I'm trying to gather unique values from a column of data, and sort it before I put it into another area of the WS. I have a named range "AcctList" RefersTo: $M$30:$M$160 I have a function Last that will find the last row number that has data within the range passed in. So I want to take the Range("AcctList") and create a new range that contains cells from the beginning of "AcctList" to the last row determined by my function Last. I currently have this: Set currRange = ActiveSheet.Range("AcctList") AccountLastRow = Last(1, currRange) If AccountLastRow <= 0 Then Exit Function ' no data in range. Set currRange2 = ActiveSheet.Range(currRange.Cells(1), currRange.Cells(AccountLastRow)) But if AccountLastRow is 31, then the range is $M30:M60. What is the correct way to use that AccountLastRow to specifiy the range? Once I have this range, I already have the Unique and sort functions complete. Thanks, John S. |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks, I'll try that.
John "Jacob Skaria" wrote: The below will give you the last entry in M starting from 29 lngLastrow = ActiveSheet.Cells(29, "M").End(xlDown).Row OR The below will give you the row number of the first entry starting from 161 upwards lngLastrow = ActiveSheet.Cells(161, "M").End(xlUp).Row Adjust to suit If this post helps click Yes --------------- Jacob Skaria "DocBrown" wrote: I'm sure I'm missing something simple.... I seem to be missunderstanding how to create the range I need. I also may be trying to be too efficient with my use of the range so, maybe I need to consider that. I'm trying to gather unique values from a column of data, and sort it before I put it into another area of the WS. I have a named range "AcctList" RefersTo: $M$30:$M$160 I have a function Last that will find the last row number that has data within the range passed in. So I want to take the Range("AcctList") and create a new range that contains cells from the beginning of "AcctList" to the last row determined by my function Last. I currently have this: Set currRange = ActiveSheet.Range("AcctList") AccountLastRow = Last(1, currRange) If AccountLastRow <= 0 Then Exit Function ' no data in range. Set currRange2 = ActiveSheet.Range(currRange.Cells(1), currRange.Cells(AccountLastRow)) But if AccountLastRow is 31, then the range is $M30:M60. What is the correct way to use that AccountLastRow to specifiy the range? Once I have this range, I already have the Unique and sort functions complete. Thanks, John S. |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
"But if AccountLastRow is 31, then the range is $M30:M60"
There are 31 rows in range(M30:M60). That appears to be the correct answer. Were you expecting range(M30:M31)? -- Jim Cone Portland, Oregon USA "DocBrown" wrote in message I'm sure I'm missing something simple.... I seem to be missunderstanding how to create the range I need. I also may be trying to be too efficient with my use of the range so, maybe I need to consider that. I'm trying to gather unique values from a column of data, and sort it before I put it into another area of the WS. I have a named range "AcctList" RefersTo: $M$30:$M$160 I have a function Last that will find the last row number that has data within the range passed in. So I want to take the Range("AcctList") and create a new range that contains cells from the beginning of "AcctList" to the last row determined by my function Last. I currently have this: Set currRange = ActiveSheet.Range("AcctList") AccountLastRow = Last(1, currRange) If AccountLastRow <= 0 Then Exit Function ' no data in range. Set currRange2 = ActiveSheet.Range(currRange.Cells(1), currRange.Cells(AccountLastRow)) But if AccountLastRow is 31, then the range is $M30:M60. What is the correct way to use that AccountLastRow to specifiy the range? Once I have this range, I already have the Unique and sort functions complete. Thanks, John S. |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Yes, Given the values I supplied, I want the range to become (M30:M31). What
is the syntax for generating that range? In the way I have coded it, it is apparent that the 31, which is the row number is being added to the starting rwo of 30 to create that (M30:M60) range. Thanks, John "Jim Cone" wrote: "But if AccountLastRow is 31, then the range is $M30:M60" There are 31 rows in range(M30:M60). That appears to be the correct answer. Were you expecting range(M30:M31)? -- Jim Cone Portland, Oregon USA "DocBrown" wrote in message I'm sure I'm missing something simple.... I seem to be missunderstanding how to create the range I need. I also may be trying to be too efficient with my use of the range so, maybe I need to consider that. I'm trying to gather unique values from a column of data, and sort it before I put it into another area of the WS. I have a named range "AcctList" RefersTo: $M$30:$M$160 I have a function Last that will find the last row number that has data within the range passed in. So I want to take the Range("AcctList") and create a new range that contains cells from the beginning of "AcctList" to the last row determined by my function Last. I currently have this: Set currRange = ActiveSheet.Range("AcctList") AccountLastRow = Last(1, currRange) If AccountLastRow <= 0 Then Exit Function ' no data in range. Set currRange2 = ActiveSheet.Range(currRange.Cells(1), currRange.Cells(AccountLastRow)) But if AccountLastRow is 31, then the range is $M30:M60. What is the correct way to use that AccountLastRow to specifiy the range? Once I have this range, I already have the Unique and sort functions complete. Thanks, John S. |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Sub Redo()
Dim RowsCount As Long Dim CurrRng As Range Dim CurrRng2 As Range RowsCount = Range("AcctList").Cells.Count Set CurrRng = Range("AcctList")(1) Set CurrRng2 = Range("AcctList")(RowsCount + 1).End(xlUp) MsgBox Range(CurrRng, CurrRng2).Address End Sub -- Jim Cone Portland, Oregon USA "DocBrown" wrote in message Yes, Given the values I supplied, I want the range to become (M30:M31). What is the syntax for generating that range? In the way I have coded it, it is apparent that the 31, which is the row number is being added to the starting rwo of 30 to create that (M30:M60) range. Thanks, John "Jim Cone" wrote: "But if AccountLastRow is 31, then the range is $M30:M60" There are 31 rows in range(M30:M60). That appears to be the correct answer. Were you expecting range(M30:M31)? -- Jim Cone Portland, Oregon USA |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I like this solution. It's short and concise.
Thanks, Jim John "Jim Cone" wrote: Sub Redo() Dim RowsCount As Long Dim CurrRng As Range Dim CurrRng2 As Range RowsCount = Range("AcctList").Cells.Count Set CurrRng = Range("AcctList")(1) Set CurrRng2 = Range("AcctList")(RowsCount + 1).End(xlUp) MsgBox Range(CurrRng, CurrRng2).Address End Sub -- Jim Cone Portland, Oregon USA "DocBrown" wrote in message Yes, Given the values I supplied, I want the range to become (M30:M31). What is the syntax for generating that range? In the way I have coded it, it is apparent that the 31, which is the row number is being added to the starting rwo of 30 to create that (M30:M60) range. Thanks, John "Jim Cone" wrote: "But if AccountLastRow is 31, then the range is $M30:M60" There are 31 rows in range(M30:M60). That appears to be the correct answer. Were you expecting range(M30:M31)? -- Jim Cone Portland, Oregon USA |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Instead of your code below
Set currRange2 = ActiveSheet.Range(currRange.Cells(1), currRange.Cells(AccountLastRow)) Try this one. Set currRange2 = currRange.Resize(AccountLastRow - currRange.Row, 1) P.S. Do not add ActiveSheet before currRange like Set currRange2 = ActiveSheet.currRange.Resize(AccountLastRow - currRange.Row, 1) Keiji DocBrown wrote: I'm sure I'm missing something simple.... I seem to be missunderstanding how to create the range I need. I also may be trying to be too efficient with my use of the range so, maybe I need to consider that. I'm trying to gather unique values from a column of data, and sort it before I put it into another area of the WS. I have a named range "AcctList" RefersTo: $M$30:$M$160 I have a function Last that will find the last row number that has data within the range passed in. So I want to take the Range("AcctList") and create a new range that contains cells from the beginning of "AcctList" to the last row determined by my function Last. I currently have this: Set currRange = ActiveSheet.Range("AcctList") AccountLastRow = Last(1, currRange) If AccountLastRow <= 0 Then Exit Function ' no data in range. Set currRange2 = ActiveSheet.Range(currRange.Cells(1), currRange.Cells(AccountLastRow)) But if AccountLastRow is 31, then the range is $M30:M60. What is the correct way to use that AccountLastRow to specifiy the range? Once I have this range, I already have the Unique and sort functions complete. Thanks, John S. |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
sorting range | Excel Discussion (Misc queries) | |||
sorting range | Excel Discussion (Misc queries) | |||
Sorting a Range | Excel Discussion (Misc queries) | |||
sorting a range | Excel Discussion (Misc queries) | |||
Sorting a Range using VBA | Excel Programming |