LinkBack Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3
Default Sorted range into collection

Hi Matt, your suggestion has been very helpful to me, thank you very much.
I changed your sub into a function (its what I needed from the beginning);
Im posting it below, hoping it could be useful to anyone.
Thanks a lot again.
Maurizio

Public Function getDistincValuesFromRange(strSelectedSheet As String,
strSelectedColumn As String) As Collection

Dim rngData As Range
Dim rngCell As Range
Dim colNoRepeats As New Collection
Dim lngJ As Long
Dim lngK As Long
Dim varCurr As Variant
Dim varNext As Variant
Dim varItem As Variant
Dim strStartCell As String
Dim strLastCellInColumn As String

'if you want all the values
'strStartCell = strSelectedColumn & "1"

'if you want all the values except the header
strStartCell = strSelectedColumn & "2"
strLastCellInColumn = strSelectedColumn & "65536"

Set rngData =
ActiveWorkbook.Sheets(strSelectedSheet).Range(strS tartCell,
Range(strLastCellInColumn).End(xlUp))

On Error Resume Next
For Each rngCell In rngData.Cells
colNoRepeats.Add Item:=rngCell.Value, Key:=CStr(rngCell.Value)
Next

On Error GoTo 0
For lngJ = 1 To colNoRepeats.Count - 1

For lngK = lngJ + 1 To colNoRepeats.Count

varCurr = colNoRepeats(lngJ)
varNext = colNoRepeats(lngK)

If varCurr = varNext Then
colNoRepeats.Add Item:=varCurr, Befo=lngK
colNoRepeats.Add Item:=varNext, Befo=lngJ
colNoRepeats.Remove lngJ + 1
colNoRepeats.Remove lngK + 1
End If

Next

Next

Set getDistincValuesFromRange = colNoRepeats

End Function



See below. This sub will work on the specified column data (which for
the purposes of the sub below is the data in column A). My first
learned this from J-Walk's website.

Best,

Matt Herbert

Sub CollectionOneColumn()

Dim rngData As Range
Dim rngCell As Range
Dim colNoRepeats As New Collection
Dim lngJ As Long
Dim lngK As Long
Dim varCurr As Variant
Dim varNext As Variant
Dim varItem As Variant

Set rngData = Range("a1", Cells(Columns("A").Cells.Count, 1).End
(xlUp))

On Error Resume Next
For Each rngCell In rngData.Cells
colNoRepeats.Add Item:=rngCell.Value, Key:=CStr(rngCell.Value)
Next
On Error GoTo 0

For lngJ = 1 To colNoRepeats.Count - 1
For lngK = lngJ + 1 To colNoRepeats.Count
varCurr = colNoRepeats(lngJ)
varNext = colNoRepeats(lngK)

If varCurr = varNext Then
colNoRepeats.Add Item:=varCurr, Befo=lngK
colNoRepeats.Add Item:=varNext, Befo=lngJ
colNoRepeats.Remove lngJ + 1
colNoRepeats.Remove lngK + 1
End If
Next
Next

For Each varItem In colNoRepeats
Debug.Print varItem
Next

End Sub

 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
First Value in Sorted Column is Not Sorted Properly jgraves Excel Discussion (Misc queries) 3 August 4th 09 07:19 PM
Not sorted union range. Joergen Bondesen Excel Programming 0 January 4th 09 09:23 PM
Link to a named range in another worksheet that is sorted frequent ShortBlonde Excel Worksheet Functions 2 March 18th 08 03:32 PM
Insert rows into a sorted range FIRSTROUNDKO via OfficeKB.com Excel Programming 5 March 20th 06 05:06 PM
Range collection Ernst Guckel[_4_] Excel Programming 4 May 1st 05 08:01 PM


All times are GMT +1. The time now is 04:24 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"