Identifying Unique Values In An Array Or Range (VBA)
Date: 20/11/2012
Procedure: Identifying Unique Values In An Array Or Range (VBA)
Source: LINK
Permalink: LINK
Created by: HeelpBook Staff
Document Version: 1.0
IDENTIFYING UNIQUE VALUES IN AN ARRAY OR RANGE (VBA)
Have you e ver had to work with just the unique items in a range? If your data is in the form of a database , you can use
the Advanced Filter command to e xtract the unique ite ms from a single column. But if your data spans multiple
columns, Advanced Filter won¡¯t work. And the Advanced F ilter won¡¯t do you any good if your data is in a VBA array.
In this document I prese nt a VBA function that acce pts e ithe r a worksheet range object or a VBA array. The function
re turns e ithe r:
?
?
A variant array that consists of just the unique e leme nts in the input array or range (or)
A sing le value: the number of unique e le me nts in the input array or range.
He re ¡¯s the syntax for the UniqueItems function (which is liste d at the end of this docume nt):
UniqueItems(ArrayIn, Count)
?
?
ArrayIn: A range object, or an array
Count: (Optional) If True or omitte d, the function re turns a single value ¨C the number of unique ite ms
in ArrayIn. If False , the function returns an array that consists of the unique items in ArrayIn.
EXAMPLE 1
The subroutine be low de monstrates UniqueItems. The routine ge ne rates 100 r and om int eger sand stores them in an
array. This array is then passe d to the UniqueItems function and a message box displays the number of unique inte ge rs
in the array.
The number will vary each time you run the subroutine .
Sub Test1()
Dim z(1 To 100)
For i = 1 To 100
z(i) = Int(Rnd() * 100)
Next i
Date: 20/11/2012
Total Chars: 3152
Page: 1
Total Words: 652
IDENTIFYING UNIQUE VALUES IN AN ARRAY OR RANGE (VBA)
20/11/2012
MsgBox UniqueItems(z, True)
End Sub
EXAMPLE 2
The subroutine be low counts the numbe r of common e le ments in two workshee t ranges. It creates two
arrays. Arr ay 1 consists of the unique ite ms in A1:A16; A rra y2 consists of the unique items in B1:B16.
A neste d loop counts the numbe r of ite ms that are in both ranges.
Sub Test2()
Set Range1 = Sheets("Sheet1").Range("A1:A16")
Set Range2 = Sheets("Sheet1").Range("B1:B16")
Array1 = UniqueItems(Range1, False)
Array2 = UniqueItems(Range2, False)
CommonCount = 0
For i = LBound(Array1) To UBound(Array1)
For j = LBound(Array2) To UBound(Array2)
If Array1(i) = Array2(j) Then _
CommonCount = CommonCount + 1
Next j
Next i
MsgBox CommonCount
End Sub
Data: 20/11/2012
Total Chars: 3152
Page: 2
Total Words: 652
IDENTIFYING UNIQUE VALUES IN AN ARRAY OR RANGE (VBA)
20/11/2012
EXAMPLE 3
The UniqueItems function can also be use d in workshee t formulas. The formula be low re turns the numbe r of unique
ite ms in a range:
=UniqueItems(A1:D21)
EXAMPLE 4
To display the unique ite ms in a range , you must array-e nter the formula into a range of ce lls (use Ctrl+Shift+Enter). The
re sult of the UniqueItems function is a horizontal array. If you would like to display the unique values in a column, you
can use the TRANSPOSE function. The formula be low (which is array-ente re d into a ve rtical range) re turns the unique
ite ms inA1:D21.
=TRANSPOSE(UniqueItems(A1:D21,FALSE))
THE C ODE
Option Base 1
Function UniqueItems(ArrayIn, Optional Count As Variant) As Variant
' Accepts an array or range as input ' If Count = True or is missing, the function
returns the number of unique elements ' If Count = False, the function returns a variant
array of unique elements
Dim Unique() As Variant ' array that holds the unique items
Dim Element As Variant
Dim i As Integer
Dim FoundMatch As Boolean
' If 2nd argument is missing, assign default value
If IsMissing(Count) Then Count = True
Data: 20/11/2012
Total Chars: 3152
Page: 3
Total Words: 652
IDENTIFYING UNIQUE VALUES IN AN ARRAY OR RANGE (VBA)
20/11/2012
' Counter for number of unique elements
NumUnique = 0
' Loop thru the input array
For Each Element In ArrayIn
FoundMatch = False
' Has item been added yet?
For i = 1 To NumUnique
If Element = Unique(i) Then
FoundMatch = True
Exit For '(exit loop)
End If
Next i
AddItem:
' If not in list, add the item to unique list
If Not FoundMatch And Not IsEmpty(Element) Then
NumUnique = NumUnique + 1
ReDim Preserve Unique(NumUnique)
Unique(NumUnique) = Element
End If
Data: 20/11/2012
Total Chars: 3152
Page: 4
Total Words: 652
IDENTIFYING UNIQUE VALUES IN AN ARRAY OR RANGE (VBA)
20/11/2012
Next Element
' Assign a value to the function
If Count Then UniqueItems = NumUnique Else UniqueItems = Unique
End Function
Data: 20/11/2012
Total Chars: 3152
Page: 5
Total Words: 652
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
- identifying unique values in an array or range vba
- arraylist multidimensional arrays
- a beginners guide to arrays and do loops
- introductory notes variables equations
- working with array functions and dlls in excel vba
- basic matrix and vector functions written with
- vba cheat sheets automate excel
- chapter 2 3 vba primer northwestern university
Related searches
- python pandas count unique values in column
- count unique values in python
- unique values in a column pandas
- python count unique values in column
- pandas list unique values in column
- python unique values in column
- unique values in dataframe
- unique values in pandas dataframe
- python print unique values in list
- unique values in a column python
- excel get unique values in column
- excel find unique values in two columns