+ Reply to Thread
Results 1 to 2 of 2

Code to pick up unique references in a cell from a different worksheet

Hybrid View

fusion007 Code to pick up unique... 07-07-2011, 05:44 PM
Leith Ross Re: Code to pick up unique... 07-07-2011, 09:53 PM
  1. #1
    Registered User
    Join Date
    06-20-2011
    Location
    England
    MS-Off Ver
    Excel 2003
    Posts
    91

    Code to pick up unique references in a cell from a different worksheet

    Hi...I would like a list of values in a column in worksheet A to be created from unique values in column B from worksheet B. Values in this can be the same for many rows so I only want unique values. In worksheet I want a drop down list that a user picks.
    Can anyone help with this please? Thanks

  2. #2
    Forum Moderator Leith Ross's Avatar
    Join Date
    01-15-2005
    Location
    San Francisco, Ca
    MS-Off Ver
    2000, 2003, & 2010
    Posts
    23,259

    Re: Code to pick up unique references in a cell from a different worksheet

    Hello fusion007,

    This macro will return an array (single column) of unique values that are sorted.
    'Written: July 07, 2011
    'Author:  Leith Ross
    'Summary: Finds uniques values in a single column range and returns them
    '         in a sorted 2-D (n x 1) array.
    
    Function GetSortedUniques(ByRef Rng As Range, Optional Descending As Boolean)
    
      Dim Cell As Range
      Dim Dict As Object
      Dim Key As Variant
      
      Dim arr As Variant
      Dim B As Long
      Dim I As Long
      Dim J As Long
      Dim N As Long
      Dim Temp As Variant
      
        Set Dict = CreateObject("Scripting.Dictionary")
        Dict.CompareMode = vbTextCompare
        
        For Each Cell In Rng.Columns(1).Cells
          Key = Trim(Cell)
          If Key <> "" Then
            If Not Dict.Exists(Key) Then Dict.Add Key, Cell.Value
          End If
        Next Cell
        
          arr = Dict.Items
          
          B = LBound(arr)
          N = UBound(arr)
        
          For I = B To N
            For J = B To N - 1
              If Descending Xor (arr(I) < arr(J)) Then
                 Temp = arr(J)
                 arr(J) = arr(I)
                 arr(I) = Temp
              End If
            Next J
          Next I
        
        GetSortedUniques = WorksheetFunction.Transpose(arr)
        
    End Function

    Macro Example
    Change the worksheet names and ranges to what you are using. For the destination range (DstRng), you only need to specify the first cell of the list.
    Sub Macro1()
    
      Dim arr As Variant
      Dim DstRng AS Range
      Dim SrcRng AS Range
    
        Set SrcRng = Worksheets("SheetB").Range("B:B")
        Set DstRng = Worksheets("SheetA").Range("A1")
    
        arr = GetSortedUniques(SrcRng)
        DstRng,Resize(UBound(arr), 1) = arr
    
    End Sub
    Sincerely,
    Leith Ross

    Remember To Do the Following....

    1. Use code tags. Place [CODE] before the first line of code and [/CODE] after the last line of code.
    2. Thank those who have helped you by clicking the Star below the post.
    3. Please mark your post [SOLVED] if it has been answered satisfactorily.


    Old Scottish Proverb...
    Luathaid gu deanamh maille! (Rushing causes delays!)

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1