ExcelTips (Menu Interface)
Got a version of Excel that uses the menu interface (Excel 97, Excel 2000, Excel 2002, or Excel 2003)? This site is for you! If you use a later version of Excel, visit our site focusing on the ribbon interface.
ExcelTips FAQ
Ask an Excel Question
Make a Comment
Free Business Forms
Free Calendars
Sometimes you need to know the number of unique values in a range of cells. For instance, suppose that an instructor was teaching the following classes:
104-120 104-101 104-119 104-120
In this case there are three unique values. There is no intuitive worksheet function that will return a count of unique values, which makes one think that a user-defined function would be the logical approach. However, you can use an array formula to very easily derive the desired information. Follow these steps:
=SUM(1/COUNTIF(MyRange,MyRange))
{=SUM(1/COUNTIF(MyRange,MyRange))}
That's it! The cell now contains the number of unique name values in the specified range. This approach is not case-sensitive, so if you have two values that differ only in their capitalization (ThisName vs. THISNAME), they are both counted as a single unique value. In addition, there can be no blank cells in the range. (Having a blank cell returns a #DIV/0 error from the formula.)
If your particular needs require that your list contain blanks (but you don't want them counted) and you want the evaluation to be case-sensitive, then you must turn to a macro. The following VBA macro, CountUnique, will do the trick:
Function CountUnique(ByVal MyRange As Range) As Integer
Dim Cell As Range
Dim J As Integer
Dim iNumCells As Integer
Dim iUVals As Integer
Dim sUCells() As String
iNumCells = MyRange.Count
ReDim sUCells(iNumCells) As String
iUVals = 0
For Each Cell In MyRange
If Cell.Text > "" Then
For J = 1 To iUVals
If sUCells(J) = Cell.Text Then
Exit For
End If
Next J
If J > iUVals Then
iUVals = iUVals + 1
sUCells(iUVals) = Cell.Text
End If
End If
Next Cell
CountUnique = iUVals
End Function
Simply put an equation similar to the following in a cell:
=CountUnique(MyRange)
The value returned is the number of unique values, not counting blanks, in the range.
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (2337) applies to Microsoft Excel versions: 97 2000 2002 2003
Related Tips:
Save Time and Money! Many people need to keep track of employee time, but don't know where to start when it comes to creating a spreadsheet. Here's a way to save time, effort, and money with ready-to-use timesheet templates. Check out Timesheet Templates today!