## Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

• Help others & share knowledge
• Earn cash & points
Solved

# compare value in an array

Posted on 2010-11-24
576 Views
hi,
I've stuck on a process which need to compare values in a two dimensional array, to determine how many different unique identities are there in such array. would anybody help me with that?
I am reading data into array through database, and it returns something like this.
counting(1,0) = "Mike"
counting(2,0) = "jack"
.
.
.
counting(8,0) = "Mike" --> theres a duplicate
.
.
.
the size of array varied each time i run the solution. but i managed to have all the names in
counting(i,0). if that helps. any help would be appreciated;)

and eventually i need to create a list of unique Names, so that'll minors the range down to like 10 persons in total.
0
Question by:miketonny
• 3

LVL 10

Expert Comment

ID: 34210746
iterate through each element in the array and copy the element to a new array. before adding it to the new array check if the new array already contains it. if it does don't copy it.
0

LVL 10

Expert Comment

ID: 34210772

``````Dim unique() As String
ReDim unique(0)
Dim valExists As Boolean
For Each Val As String In counting
valExists = False
For Each uniqueVal As String In unique
If (uniqueVal = Val) Then
valExists = True
Exit For
End If
Next
If Not valExists Then
ReDim Preserve unique(unique.Length + 1)
unique(UBound(unique)) = Val
End If
Next
``````
0

LVL 13

Expert Comment

ID: 34212250
Hi,

You can also use the dictionary object - dictionary keys must be unique.

The short script below is a example of using this method.

Hope this helps,
Daz.
``````Dim Counting(50,1)

Set dicList = CreateObject("Scripting.Dictionary")

Counting(0,0) = "Mike"
Counting(1,0) = "Jon"
Counting(2,0) = "Mike"
Counting(3,0) = "Daz"
Counting(4,0) = "Mary"
Counting(5,0) = "Mike"

For i = 0 To UBound(Counting, 1)
If Counting(i, 0) <> "" Then
dicList(Counting(i, 0)) = 1
End If
Next

MsgBox Join(dicList.Keys, " / "),, "Unique Names = " & dicList.Count
``````
0

LVL 2

Author Comment

ID: 34214204
hi hosneylk,
it did give me the counts in array, but it included all the irrelevant data, as it's a two dimensional array, i do know the usernames are only stored in (1,0), (2,0), ... (x,0). but what you did stores pretty much every different value into the new array, how do i sort them out?
0

LVL 10

Accepted Solution

hosneylk earned 125 total points
ID: 34214996

``````Dim unique() As String
Dim strVal As String
ReDim unique(0)
Dim valExists As Boolean
Dim i As Long
For i = LBound(counting, 1) To UBound(counting, 1)
valExists = False
strVal = counting(i, 0)
For Each uniqueVal As String In unique
If (uniqueVal = strVal) Then
valExists = True
Exit For
End If
Next
If Not valExists Then
ReDim Preserve unique(unique.Length + 1)
unique(UBound(unique)) = strVal
End If
Next
``````
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question