UNIQUE

Array Functions
(4.9/5)

The UNIQUE function extracts unique values from arrays or ranges automatically. Perfect for removing duplicates, generating distinct lists, data deduplication, and creating clean datasets without manual filtering.

Interactive Formula Tester

=UNIQUE("")

Complete Theory & Understanding

Master the fundamentals of Excel UNIQUE function

Core Concept

UNIQUE is a dynamic array function that extracts distinct values from arrays automatically. It maintains the first occurrence of each unique value while removing subsequent duplicates, making it essential for data cleaning and deduplication tasks.

Why Use UNIQUE?

  • Clean datasets by removing duplicates
  • Create distinct lists from datasets
  • Extract unique values for reports
  • Identify unique categories and items

Key Characteristics

Automatic Deduplication

Removes duplicates while keeping first occurrence

=UNIQUE(A1:A10)

Dynamic Sizing

Output adjusts to number of unique values found

Output size varies with uniqueness

Multi-Column Support

Can compare rows or columns for uniqueness

by_col parameter for flexibility

Frequency Filter

Can return values appearing exactly once

exactly_once parameter

Function Anatomy

=UNIQUE(parameters...)
Required
Parameters:

Function-specific parameters

Returns
Return Value:

Function-specific return type

Primary Use Cases

Data Deduplication

Clean datasets by removing duplicates

List Generation

Create distinct lists from datasets

Report Generation

Extract unique values for reports

Data Analysis

Identify unique categories and items

Theory Summary

Precise

Exact matching required

Position-Based

Returns numeric position

Error-Safe

Handles missing text gracefully

Syntax & Parameters

=UNIQUE(array, by_col, exactly_once)
Required
array:

The array or range to extract unique values from (required)

Optional
by_col:

FALSE to compare by rows (default), TRUE to compare by columns

Optional
exactly_once:

FALSE for all unique values (default), TRUE for values appearing exactly once

Returns
Return Value:

Array of unique values

Description: Extracts and returns unique values from an array

Interactive Examples

Basic Unique

Extract unique values from list

"A1:A10 with duplicates"
=UNIQUE(A1:A10)
Unique values only

Removes duplicates, keeping first occurrence of each unique value

VBA Implementation & Automation

Manual UNIQUE Implementation

Create UNIQUE-like functionality in VBA

' Get unique values from range
Function UniqueVBA(inputRange As Range) As Variant
    Dim dict As Object
    Dim cell As Range
    Dim result() As Variant
    Dim i As Long
    
    Set dict = CreateObject("Scripting.Dictionary")
    
    ' Collect unique values
    For Each cell In inputRange
        If Not dict.exists(cell.Value) Then
            dict.Add cell.Value, cell.Value
        End If
    Next cell
    
    ' Convert to array
    ReDim result(1 To dict.Count, 1 To 1)
    i = 1
    For Each key In dict.Keys
        result(i, 1) = key
        i = i + 1
    Next
    
    UniqueVBA = result
End Function

' Usage example
Sub Example_UniqueVBA()
    Dim uniqueValues As Variant
    uniqueValues = UniqueVBA(Range("A1:A100"))
    
    Range("C1").Resize(UBound(uniqueValues, 1), 1).Value = uniqueValues
    MsgBox "Unique values: " & UBound(uniqueValues, 1)
End Sub

Advanced: Unique with Frequency

Get values appearing exactly once

' Get values appearing exactly once
Function UniqueOnceVBA(inputRange As Range) As Variant
    Dim dict As Object
    Dim cell As Range
    Dim result() As Variant
    Dim i As Long
    
    Set dict = CreateObject("Scripting.Dictionary")
    
    ' Count occurrences
    For Each cell In inputRange
        If dict.exists(cell.Value) Then
            dict(cell.Value) = dict(cell.Value) + 1
        Else
            dict.Add cell.Value, 1
        End If
    Next cell
    
    ' Collect values appearing exactly once
    ReDim result(1 To 0, 1 To 1)
    i = 0
    For Each key In dict.Keys
        If dict(key) = 1 Then
            ReDim Preserve result(1 To UBound(result, 1) + 1, 1 To 1)
            i = i + 1
            result(i, 1) = key
        End If
    Next
    
    UniqueOnceVBA = result
End Function

' Usage
Sub Example_UniqueOnce()
    Dim onceValues As Variant
    onceValues = UniqueOnceVBA(Range("A1:A200"))
    
    If UBound(onceValues, 1) > 0 Then
        Range("D1").Resize(UBound(onceValues, 1), 1).Value = onceValues
        MsgBox "Values appearing once: " & UBound(onceValues, 1)
    Else
        MsgBox "No values appear exactly once"
    End If
End Sub

Business Applications

Customer Lists

Extract unique customer names

=UNIQUE(CustomerNames)

Product Catalog

Get distinct product categories

=UNIQUE(ProductCategories)

Event Analysis

Identify unique events or transactions

=UNIQUE(EventIDs)

Survey Data

Extract distinct responses

=UNIQUE(SurveyResponses)

Error Identification

Find values appearing exactly once

=UNIQUE(Data, FALSE, TRUE)

Common Issues & Solutions

#SPILL! Error

Not enough space for unique results

Ensure adequate space for unique values

Solution: Clear cells to allow array to spill

Unexpected Results

by_col or exactly_once behavior unclear

Review by_col and exactly_once parameters

Solution: Check parameter settings for intended behavior

Case Sensitivity

Text case differences create separate unique values

=UNIQUE(UPPER(A1:A10))

Solution: Use UPPER or LOWER before UNIQUE if needed

Whitespace Issues

Leading/trailing spaces affect uniqueness

=UNIQUE(TRIM(A1:A10))

Solution: Use TRIM before UNIQUE to normalize

Performance Tips & Best Practices

⚡ Performance Optimization

  • UNIQUE is highly efficient even with large datasets
  • Use with specific ranges instead of entire columns when possible
  • Combine with FILTER and SORT for powerful data cleaning
  • Consider exactly_once parameter for performance in some cases

🎯 Best Practices

  • Use TRIM and UPPER before UNIQUE for text normalization
  • Document UNIQUE usage in cell comments
  • Test on sample data to verify behavior
  • Combine with SORT for organized output