Pagina 1 di 1

Occorrenze in un array con Visual Basic

Inviato: 24 nov 2014, 19:01
da Keen
Salve a tutti,
premetto che è la prima volta che uso Visual Basic. Devo contare quante volte alcuni valori si ripetono in una colonna. Data la colonna con valori 1 1 5 1 5, devo avere in uscita il numero di volte in cui si ripetono i valori. Di seguito posto il codice

Codice: Seleziona tutto

Sub leggivalori()
Dim i As Integer, j As Integer, c As Integer
For i = 1 To 5
c = 0
For j = 1 To 5
If Cells(i, 1) = Cells(j, 1) Then
c = c + 1
End If
Next
Cells(i, 3) = c
Cells(i, 2) = Cells(i, 1)
Next
End Sub

Il codice da come risultato:
    1 3
    1 3
    5 2
    1 3
    5 2

che è esatto, ma vorrei che fosse solo
    1 3
    5 2
Come posso fare? Qualcuno può aiutarmi?
Grazie a tutti
O_/

Re: Occorrenze in un array con Visual Basic

Inviato: 24 nov 2014, 22:10
da Russell
E' solo un fatto di logica, non hai commesso nessun errore particolare, ti manca solo un dettaglio:
prima di partire con il conteggio (for J...) devi controllare che tu non abbia gia' controllato Cells(i, 1) in precedenza.
Quindi, una volta fissato i, devi fare subito un altro loop che scorre gli elementi passati... se l'attuale Cells(i, 1) ti è gia' passato tra le mani allora ti fermi e vai oltre.
Probabilmente ti fa' comodo la parola chiave "continue" se gia' non la conosci
http://msdn.microsoft.com/en-us/library/801hyx6f.aspx

Re: Occorrenze in un array con Visual Basic

Inviato: 25 nov 2014, 15:47
da lelerelele
devi controllare se esiste gia il valore della cella conteggiata; il metodo potrebbe essere questo.

-oltre la cella conteggiata salvo anche il valore interno alla cella, in un nuovo array.
-alla successiva cella verifico che il valore che sto leggendo sia gia conteggiato, se no lo aggiungo c=c+1 e ne salvo il valore per il conteggio successivo.

saluti.

Re: Occorrenze in un array con Visual Basic

Inviato: 25 nov 2014, 21:07
da Keen
Ciao Russell, grazie per la tua risposta. Dicevi
una volta fissato i, devi fare subito un altro loop che scorre gli elementi passati... se l'attuale Cells(i, 1) ti è gia' passato tra le mani allora ti fermi e vai oltre.
Probabilmente ti fa' comodo la parola chiave "continue" se gia' non la conosci

ho provato ma non riesco ad ottenere nulla con la continue o forse la uso male io. Hai un suggerimento in più? Grazie mille a tutti per le risposte.
O_/

Re: Occorrenze in un array con Visual Basic

Inviato: 25 nov 2014, 22:18
da Russell
intendevo qualcosa del genere..

Codice: Seleziona tutto


For i = 1 To 5

  Ripetizione=false;
  For j = 1 To i-1
    If Cells(i, 1) = Cells(j, 1) Then
      Ripetizione=true;
    End If
  Next
  if Ripetizione Then
    continue
  end if

  c = 0
  For j = 1 To 5
    If Cells(i, 1) = Cells(j, 1) Then
      c = c + 1
    End If
  Next

  Cells(i, 3) = c
  Cells(i, 2) = Cells(i, 1)
Next
End Sub