Excel 2007 numeri casuali



  • Excel 2007 numeri casuali
    di Max (utente non iscritto) data: 17/01/2012

    Salve,
    mi servirebbe una macro che genera numeri casuali rundom da 0 a 36 senza doppioni.
    su 37 righi quindi che formano una tabella.
    ogni rigo deve contenere tutti i numeri da 0 a 36 quindi senza doppioni. dovrei fare tantissime tabelle quindi mi servirebbe che funzionasse su più fogli.

    esempio
    le righe devono contenere tutti i numeri da 0 a 36
    cella (b2:al2) da 0 a 36 casuali senza doppioni
    cella (b3:al3) da 0 a 36 casuali senza doppioni
    cella (b4:al4) da 0 a 36 casuali senza doppioni
    cella (b5:al5) da 0 a 36 casuali senza doppioni
    cella (b6:al6) da 0 a 36 casuali senza doppioni
    cella (b7:al7) da 0 a 36 casuali senza doppioni
    cella (b8:al8) da 0 a 36 casuali senza doppioni
    cella (b9:al9) da 0 a 36 casuali senza doppioni
    cella (b10:al10) da 0 a 36 casuali senza doppioni
    cella (b11:al11) da 0 a 36 casuali senza doppioni
    cella (b12:al12) da 0 a 36 casuali senza doppioni
    cella (b13:al13) da 0 a 36 casuali senza doppioni
    cella (b14:al14) da 0 a 36 casuali senza doppioni
    cella (b15:al15) da 0 a 36 casuali senza doppioni
    cella (b16:al16) da 0 a 36 casuali senza doppioni
    cella (b17:al17) da 0 a 36 casuali senza doppioni
    cella (b18:al18) da 0 a 36 casuali senza doppioni
    cella (b19:al19) da 0 a 36 casuali senza doppioni
    cella (b20:al20) da 0 a 36 casuali senza doppioni
    cella (b21:al21) da 0 a 36 casuali senza doppioni
    cella (b22:al22) da 0 a 36 casuali senza doppioni
    cella (b23:al23) da 0 a 36 casuali senza doppioni
    cella (b24:al24) da 0 a 36 casuali senza doppioni
    cella (b25:al25) da 0 a 36 casuali senza doppioni
    cella (b26:al26) da 0 a 36 casuali senza doppioni
    cella (b27:al27) da 0 a 36 casuali senza doppioni
    cella (b28:al28) da 0 a 36 casuali senza doppioni
    cella (b29:al29) da 0 a 36 casuali senza doppioni
    cella (b30:al30) da 0 a 36 casuali senza doppioni
    cella (b31:al31) da 0 a 36 casuali senza doppioni
    cella (b32:al32) da 0 a 36 casuali senza doppioni
    cella (b33:al33) da 0 a 36 casuali senza doppioni
    cella (b34:al34) da 0 a 36 casuali senza doppioni
    cella (b35:al35) da 0 a 36 casuali senza doppioni
    cella (b36:al36) da 0 a 36 casuali senza doppioni
    cella (b37:al37) da 0 a 36 casuali senza doppioni
    cella (b38:al38) da 0 a 36 casuali senza doppioni

    grazie per l'aiuto
    ciaooooooo


  • Tombola!
    di Zarathustr data: 22/01/2012

    Mi sono ispirato alla tombola: tu peschi da un sacchetto in cui i numeri - una volta estratti - non ci sono più .....
    crea una matrice di 37 elementi ed in ognuno carica il giusto numero (sarà sacchetto(1) = 1, sacchetto(2) = 2 e così via).
    estrai il primo numero a caso fra 1 e 37 - poniamo 21 - vai al sacchetto (21) e metti il contenuto sella tabella delle estrazioni.
    poi prendi il contenuto dell'ultimo sacchetto (il 37esimo) e mettilo al posto di quello che hai appena usato (il 21esimo).
    ora un numero a caso da 1 a 36 (nb. non più 37, ma 36 ...) e ripeti la sostituzione, e così via.
    in pratica ad ogni estrazione il numero estratto viene tolto dal sacchetto, che diviene sempre meno popolato e - soprattutto - popolato solo con numeri non ancora estratti.
    fammi sa pere se ti va bene, ciao.
     
    Sub random()
    Dim cestino(37) As String
    For i = 1 To 37
    cestino(i) = i
    Next
    For i = 1 To 37
    Max = 38
    k = Int(((Max - i) * Rnd) + 1)
    Foglio2.Cells(i, 1) = cestino(k)
    cestino(k) = cestino(Max - i)
    Next
    End Sub


  • Pappa fatta ....
    di Zarathustr data: 22/01/2012

    Scusa, non mi ero reso conto che volevi proprio un'applicazione specifica e non un'idea di principio.
    ecco qui sviluppata l'applicaizone che fa per te.
    nb: nelle righe non ci sono ripetizioni, nelle colonne ovviamente si ....
    non e' che per caso volevi un generatore di quadrati magici di ordine 36?
     
    Sub random()
    Range("A1", "AZ100").Select
    Selection.Clear
    Range("a1").Select
    Dim cestino(36) As String
    For j = 0 To 36
        For i = 0 To 36
            cestino(i) = i
        Next i
        For i = 0 To 36
            Max = 36
            k = Int((Max - i) * Rnd)
            Foglio2.Cells(2 + j, 2 + i) = cestino(k)
            cestino(k) = cestino(Max - i)
        Next i
    Next j
    End Sub