# 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-of-duplicate-and-unique-val
###### Who is Participating?

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.

Director, Practice Manager and Computing ConsultantCommented:
Do you need it in a macro. It is possible to do this by formula.
0
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
Director, 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
Commented:
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
Next

Set rng2 = ThisWorkbook.Names("Range_2").RefersToRange
Set coll2 = New Collection
For Counter = 1 To rng1.Rows.Count
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
``````
0

Experts Exchange Solution brought to you by

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

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.