count the number of duplicate and unique values in named ranges

Dear Experts:

I would like to run a macro that ...
... counts the number of unique and duplicate values in two named ranges on the current worksheet and
... displays these values in a msgbox

Please find the detailed explanation as well as the sample file below.

Help is much appreciated. Thank you very much in advance.

Regards, Andreas

Count_number_duplicate_unique_values
 Count-number-of-duplicate-and-unique-val
Andreas HermleTeam leaderAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Phillip BurtonDirector, Practice Manager and Computing ConsultantCommented:
Do you need it in a macro. It is possible to do this by formula.
0
Andreas HermleTeam leaderAuthor Commented:
Hi Philipp,

thank you very much for your quick feedback. As a matter of fact, I would like to use this macro along with other macros so actually the macro way would be my favourite approach. But to be honest with you, the formula solution would be very nice to know, keeping in mind that the ranges on the active worksheet can vary, i.e. the number of rows.

Regards, Andreas
0
Phillip BurtonDirector, Practice Manager and Computing ConsultantCommented:
To find the distinct values in the first range, enter

=SUM(1/COUNTIF(B2:B9,B2:B9))

but don't press Enter. Instead, press Alt+Shift+Enter.

You should then see the answer "3".
0
Patrick MatthewsCommented:
This macro ought to do the trick:

Sub CountThem()
    
    Dim rng1 As Range
    Dim rng2 As Range
    Dim Counter As Long
    Dim coll1 As Collection
    Dim coll2 As Collection
    
    On Error Resume Next
    
    Set rng1 = ThisWorkbook.Names("Range_1").RefersToRange
    Set coll1 = New Collection
    For Counter = 1 To rng1.Rows.Count
        coll1.Add rng1.Cells(Counter, 2).Value, rng1.Cells(Counter, 2).Value
    Next
    
    Set rng2 = ThisWorkbook.Names("Range_2").RefersToRange
    Set coll2 = New Collection
    For Counter = 1 To rng1.Rows.Count
        coll2.Add rng2.Cells(Counter, 2).Value, rng2.Cells(Counter, 2).Value
    Next
    
    MsgBox "Range_1 has " & coll1.Count & " distinct items and " & rng1.Rows.Count - coll1.Count & " duplicates" & _
        vbCrLf & vbCrLf & _
        "Range_2 has " & coll2.Count & " distinct items and " & rng2.Rows.Count - coll2.Count & " duplicates"
    
    Set coll1 = Nothing
    Set coll2 = Nothing
    
End Sub

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Andreas HermleTeam leaderAuthor Commented:
Dear Philipp,

thank you very much for your non-macro solution which I could also use.

Patrick, as always nice and concise coding from your side. Great job!

Again thank you very much for your great, swift and professional support. I really appreciate it.

Regards, Andreas
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Excel

From novice to tech pro — start learning today.