Discussione chiusa
Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [Excel] numeri casuali senza ripetizioni

  1. #1
    Tormael non è in linea Novello
    Post
    4
    Salve, mi servirebbe un aiuto per poter creare un algoritmo che trovi un numero casuale fra 1 ed 90, ne estragga uno, faccia questa operazione n volte senza però che venga estratto lo stesso numero. So che dovrei crearmi un array, ma non sono abbastanza pratico di VB (un po' più di excel, ma non credo che aiuti) per poterlo fare...

  2. #2
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,616
    crea un file co 2 fogli
    Un foglio lo chiami "Estrazione" il secondo foglio "Temp"

    Nel foglio temp nella cella B1 scrivi la seguente formula:
    =CONTA.VALORI(A1:A90)

    Nel foglio "Estrazione" nella cella B1 scrivi un numero da 1 a 90 (e il numero di estrazioni che deve fare)
    Crea un pulsante e gli inserisci il seguente Codice:
    codice:
    Dim I As Integer
    Dim Numero As Long
    
    
    'Svuota la Colonna a nel foglio Estrazioni
    Worksheets("estrazione").Range("A:A").Value = ""
    
    'Crea un elenco Da 1  a 90 nel foglio Temp dalla Cella A1 a A90
    For I = 1 To 90
    Worksheets("Temp").Cells(I, 1) = I
    Next I
    
    'Estrazione Dati Casuali
    For I = 1 To Worksheets("Estrazione").Range("B1")
    'Reinizializza il generatori di numeri casuali
    Randomize
    'calcola il numero da estrarre
    Numero = Rnd() * (10 ^ 9) 'rnd Numero casuale
    Numero = Numero Mod Worksheets("temp").Range("B1")
    If Numero = 0 Then
     Numero = Worksheets("temp").Range("B1")
    End If
    'Scrive il numero
    Worksheets("Estrazione").Cells(I, 1) = Worksheets("temp").Cells(Numero, 1)
    'Eliminazione Dati dal foglio Temp
    For Y = Numero To Worksheets("temp").Range("B1") + 1
     Worksheets("temp").Cells(Y, 1) = Worksheets("temp").Cells(Y + 1, 1)
    Next Y
    Next I
    'Svuota la Colonna a
    Worksheets("temp").Range("A:A") = ""
    Quindi il codice esegue queste operazioni.
    -pulisce la colonna a del foglio estrazioni
    -crea un elenco da 1 a 90 nel foglio temp
    -Esegue un ciclo per estrarre i numeri casualmente (utilizzando un numero random)
    Il ciclo esegue queste operazioni:
    -Estari un numero (corrispondente alla riga della colonna)
    -Assegna ad una cella del foglio estrazioni il valore della cella del foglio temp (Determinato dal numero casuale)
    -Elimina il numero dall'elenco posto nel foglio temp.
    Ultima modifica di dragone bianco; 08-04-2013 20:12 

  3. #3
    Tormael non è in linea Novello
    Post
    4
    Che mona!
    Non ci avevo pensato a fare un array in un foglio excel... grazie!

  4. #4
    fachiro73 non è in linea Novello
    Post
    1
    Salve
    mi sono da poco iscritto, ho seguito questa discussione perchè, da dilettante, ho creato un foglio excel per fare dei sorteggi e grazie a questa formula ci sono riuscito!!! complimenti..
    adesso avrei bisogno di un piccolo aiuto. In pratica con questa formula estraggo la serie di numeri nella colonna A, quello che vorrei fare io è creare un altro pulsante in modo da fare il sorteggio olte che nella colonna A anche nella colonna per esempio G, mi spiego meglio un pulsante esegue il comando nella colonna A ed un altro nella colonna G.
    ci sono riuscito a metà, ovvero, ho rinominato un altro foglio temp1, il pulsante crea elenco è ok ci sono riuscito
    ma quando effettuo il sorteggio mi da errore, o mi cancella solo l'elenco in temp1
    ecco la formula che ho modificato
    l'elenco deve apparire nella colonna G
    codice:
    'Estrazione Dati Casuali
    For I = 1 To Worksheets("Estrazione").Range("G1")
    'Reinizializza il generatori di numeri casuali
    Randomize
    'calcola il numero da estrarre
    Numero = Rnd() * (10 ^ 9) 'rnd Numero casuale
    Numero = Numero Mod Worksheets("temp1").Range("G1")
    If Numero = 0 Then
    Numero = Worksheets("temp1").Range("G1")
    End If
    'Scrive il numero
    Worksheets("Estrazione").Cells(I, 7) = Worksheets("temp1").Cells(I, 1)
    'Eliminazione Dati dal foglio Temp1
    For Y = Numero To Worksheets("temp1").Range("G1") + 1
    Worksheets("temp1").Cells(Y, 1) = Worksheets("temp1").Cells(Y + 1, 1)
    Next Y
    Next I
    'Svuota la Colonna a
    Worksheets("temp1").Range("G:G") = ""
    per quanto riguarda la formula
    Dim I As Integer
    Dim Numero As Long
    ..va modificata?? purtroppo non so il significato
    scusa per la lunghezza del messaggio
    ti ringrazio anticipatamente
    a presto
    fabrizio
    Ultima modifica di dragone bianco; 08-04-2013 20:14 

  5. #5
    valedefi non è in linea Novello
    Post
    7
    ciao a tutti. ho appena svolto il codice di VBA ma mi genera lo stesso numero più volte. c'è un modo per generare sempre numeri diversi e mai ripetuti?
    dichiaro la mia completa ignoranza su VBA ma mi serve per la tesi di laurea!
    grazie a tutti

  6. #6
    GiuseppeMN non è in linea Scribacchino
    Post
    637
    Scusami valedefi;
    mi era sfuggita la data della discussione. Ho preferito cancellare le due risposte precedenti.

    Se lo ritieni opportuno, credo Tu possa aprire una nuova discussione e risolviamo rapidamente.

    A disposizione.

    Giuseppe

  7. #7
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,616
    Quote Originariamente inviato da GiuseppeMN Visualizza il messaggio
    Scusami valedefi;
    mi era sfuggita la data della discussione. Ho preferito cancellare le due risposte precedenti.

    Se lo ritieni opportuno, credo Tu possa aprire una nuova discussione e risolviamo rapidamente.

    A disposizione.

    Giuseppe
    Ciao GiuseppeMN, apprezzo che ti sei accorto del messaggio datato ed hai cancellato i post
    per eliminare un post definitivamente avvisa un moderatore che lo farà con piacere
    Ho eliminato definitivamente i tuoi 2 post che hai "cancellato"

    Ciao

  8. #8
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    10,675
    Blogs
    5
    valedefi ... questo thread è datato e per questo viene chiuso.

    Apri un thread apposito.
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    La "pappa pronta" è vietata.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti [PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.

Discussione chiusa

Discussioni simili

  1. Generare numeri casuali esadecimali
    Da lucagfc nel forum Visual Basic 6
    Risposte: 17
    Ultimo Post: 11-07-2006, 15:04
  2. Numeri casuali con percentuali pari e/o dispari.
    Da © rocky nel forum Visual Basic 6
    Risposte: 11
    Ultimo Post: 03-07-2006, 15:27
  3. Risposte: 4
    Ultimo Post: 28-01-2006, 20:13
  4. numeri casuali
    Da Diabolik nel forum Visual Basic 6
    Risposte: 4
    Ultimo Post: 20-11-2005, 08:55
  5. Numeri Casuali
    Da acer1629 nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 09-08-2005, 19:41

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi