Oppure

Loading
28/12/10 9:30
swet
Salve a tutti,

Come faccio a confrontare i valori in una collection?
Partendo da un foglio excel riempio un array con dei valori che possono essere uguali tra loro, come faccio ad individuarli?
ho provato con questo codice ma non mostra il MSGBOX.
Type archivio
 numeropo As New Collection
end type

Dim i As Integer

i = 1
For i = 1 To elenco.numeropo.Count  
    If elenco.numeropo.Item(i) = elenco.numeropo.Item(i + 1) Then
        Exit For
    'Scrivere una funzione che verifica il turno per la corrispondenza
    MsgBox ("MatchFound")
     End If
    i = i + 1
    Next i
  
    

numeropo è riempito mediante un ciclo for each con i valori di una colonna del file excel.

Grazie
aaa
29/12/10 10:08
poeo85
scusa ma se fai l'ordinamento del tuo array dopo non avrai tutti i numeri ordinati per cui se se posizionato in array(i) lo confronti con il sucessivo o precedente?
aaa
03/01/11 11:45
swet
Ti spiego il mio problema, io ho dei valori uguali all'interno di un array, mi servirebbe trovare tutti i valori uguali e sommarli tra loro, però una sola volta, ad esempio, ho provato con due contatori all'interno di un ciclo(uno dentro l' altro), e ogni volta che viene trovato un valore uguale(anche se era gia stato trovato in qualche ciclo precedente) esegue l'azione .

Ecco il codice:

Dim quantità As Integer
For i = 0 To 29
    For y = 1 To 29
      If elenco(i).numeropo <> "" Then
        
            If elenco(i).numeropo = elenco(y).numeropo Then
                 MsgBox ("MatchFound" & elenco(y).numeropo)
                  y = y + 1
            End If
            End If
        Next y
    
Next i
aaa
03/01/11 15:32
poeo85
scusami ma allora tu più che una somma di numeri vuoi una conta dei valori uguali o sbaglio ???


esempio:
array(0) = 2
array(1) = 2
array(2) = 5
array(3) = 7

tu ciò che vorresti ottenere dovrebbe essere
2 -> 2
5 -> 1
7 -> 1

giusto????

fammi un esempio se non ho capito il problema, per favore, che son di coccio... :D....
altra cosa...il file excel è vincolante??? nel senso i tuoi dati li devi avere necessariamente in excel? perchè se li avessi in un db ti basta fare una select con un count e sei apposto...dopo basta soltanto leggere il recordset...
aaa
03/01/11 15:45
swet
Si hai capito benissimo , mi serve fare questo confronto in modo da poter poi fare la somma di altri dati!

Purtroppo i dati risiedono in un file excel.

Puoi aiutarmi?
Sicuramente è una cosa semplice da implementare ma non ci riesco proprio.

Ti ringrazio per il tempo dedicatomi!!
aaa
03/01/11 16:11
poeo85
allora apri un nuovo progetto inserisci un commandButton e 2 listbox

incolla al progetto e vedi come funziona

Private Sub Command1_Click()
Dim quantità As Integer
Dim arr() As Integer
Dim i As Integer
Dim cont As Integer
ReDim arr(0 To InputBox("inserisci num elementi";))

'caricamento nell'array
List1.Clear
List2.Clear
For i = 0 To UBound(arr)
arr(i) = Int(Rnd * 10) + 1
List2.AddItem arr(i)
Next i

List2.AddItem "______________________"

'ordinamento
Call ordina(arr)

For i = 0 To UBound(arr)
List2.AddItem arr(i)
Next i
cont = 1
For i = 1 To UBound(arr)
If arr(i - 1) = arr(i) Then
cont = cont + 1
Else
List1.AddItem (arr(i - 1) & " " & cont)
cont = 1
End If
Next i
List1.AddItem (arr(i - 1) & " " & cont)
End Sub

Private Sub ordina(lista() As Integer)
Dim i, j, temp As Integer
For i = UBound(lista) - 1 To 0 Step -1
For j = 0 To i
If lista(j) > lista(j + 1) Then
temp = lista(j)
lista(j) = lista(j + 1)
lista(j + 1) = temp
End If
Next j
Next i
End Sub


se ci son parti che non ti son chiare te le spiego oppure mandami un pm che ti mando la mail..se ti va mi mandi il progetto ed il punto e cerco di risolverlo nello specifico...

ma dovrebbe essere chiaro a grandi linee...


04/01/2011

come va? sei riuscito a risolvere?
Ultima modifica effettuata da poeo85 04/01/11 14:07
aaa