Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I am trying to do a unique sort to another location and I recorded this code.
Range("A2").Select Range(Selection, Selection.End(xlDown)).Select Range("A2:A69").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _ "AA1"), Unique:=True The next time there might be more than sixty-seven rows of data, so I did this, which does not work. Dim TargetArea as Range Range("A2").Select Range(Selection, Selection.End(xlDown)).Select Set TargetArea = Selection.ActiveCell Range([TargetArea]).... the rest of the sort code How does one grab a range of cells, assign it to a variable, and refer to it further down in the code? If this is not the proper way to do it, please feel free to let me know. And thanks in advance for any help on this. -- Michael Conroy Stamford, CT |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Michael,
My first question is why start from A2? If you do not include the column header in an Advanced filter/copy/unique then the first value is used as the header in the output and you will actually see 2 elements the same. The header and it will be repeated further down your list. Having said that, is there any reason you cannot use the column for the Advance filter range? Example: (Note use of Columns in lieu of Range.) Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _ "AA1"), Unique:=True If you start getting errors when the code is changed because the header is incorrect then delete all of the data in the Copy To range and also maybe the Defined name 'Extract'. (Look up defined names in Help if you don't know how to do this.) -- Regards, OssieMac "Michael Conroy" wrote: I am trying to do a unique sort to another location and I recorded this code. Range("A2").Select Range(Selection, Selection.End(xlDown)).Select Range("A2:A69").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _ "AA1"), Unique:=True The next time there might be more than sixty-seven rows of data, so I did this, which does not work. Dim TargetArea as Range Range("A2").Select Range(Selection, Selection.End(xlDown)).Select Set TargetArea = Selection.ActiveCell Range([TargetArea]).... the rest of the sort code How does one grab a range of cells, assign it to a variable, and refer to it further down in the code? If this is not the proper way to do it, please feel free to let me know. And thanks in advance for any help on this. -- Michael Conroy Stamford, CT |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hello again Michael,
Another thing you should do when using Advanced filter with code is to clear the old extracted data before re-running the code. If you don't do this before you re-run the code and there are actually less elements in the extracted data there was previously then you will still have extra data at the bottom of the list from the previous run. Because Excel creates a Defined name "Extract" for the position of the column header of the extracted range, you can use it to identify the range to be cleared. Example: (Insert immediately before the advanced filter code line) Range("Extract", Range("Extract").End(xlDown)).ClearContents Note: You cannot insert that line in your code until after the advanced filter has been run at least once. -- Regards, OssieMac |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
assign variable to a range | Excel Programming | |||
Assign copied range to a variable | Excel Programming | |||
VBA Excel how to assign name in variable range | Excel Programming | |||
range variable won't assign (chartobject.topleftcell property) | Excel Programming | |||
How to assign a variable in a range select | Excel Programming |