Solved

compare value in an array

Posted on 2010-11-24
5
559 Views
Last Modified: 2013-12-25
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
Comment
Question by:miketonny
  • 3
5 Comments
 
LVL 10

Expert Comment

by:hosneylk
Comment Utility
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

by:hosneylk
Comment Utility

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

Open in new window

0
 
LVL 12

Expert Comment

by:Daz_1234
Comment Utility
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

Open in new window

0
 
LVL 2

Author Comment

by:miketonny
Comment Utility
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

by:
hosneylk earned 125 total points
Comment Utility

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

Open in new window

0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

Have you ever wanted to restrict the users input in a textbox to numbers, and while doing that make sure that they can't 'cheat' by pasting in non-numeric text? Of course you can do that with code you write yourself but it's tedious and error-prone …
Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now