Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Excel 2007 matrice numeri casuali da 0 a 36 senza doppioni

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Excel 2007 matrice numeri casuali da 0 a 36 senza doppioni

Postdi max2011 » 17/01/12 14:20

Salve,
mi servirebbe una macro che genera numeri casuali 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
max2011
Utente Junior
 
Post: 59
Iscritto il: 03/11/11 16:34

Sponsor
 

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi Anthony47 » 17/01/12 15:36

In una colonna libera ti fai una "serie" da 0 a 36; accanto a ogni numero ci metti la formula =CASUALE()
Poi ti registri una macro mentre:
-poni il Ricalcolo in Manuale (Menu /Strumenti /Opzioni)
-comandi il Ricalcolo (premi F9)
-esegui l' ordinamento crescente della tabella 0-36/Casuale, sulla colonna Casuale
-copi i numeri 0-36 (nell' ordine in cui sono) e li "Incolli Speciale /Valori + Trasponi" (Nota *) nel primo range, cioe' in B2 (seleziona B2, comanda l' Incolla speciale)
-poni il ricalcolo in Automatico
-interrompi la registrazione Macro
Nota*: il trasponi non sarebbe necessario se la serie 0-36 /Casuale fosse prodotta su due righe invece che due colonne; ho suggerito di usare le colonne perche' l' ordinamento in righe "mi sta' antipatico"

A questo punto vai nell' editor delle macro, dove troverai il codice della tua macro.
Imposta una nuova macro
Codice: Seleziona tutto
Sub Pippo()
For I=0 to 36
'Nota **
Next I
'Nota***
End Sub

Nota**: qui inserirai le N righe della macro originale che mottono Ricalcolo in Manuale, ricalcolano, ordinano, copiano, selezionano B2, incollano speciale.
Nota***: qui inserirai l' istruzione che pone il Ricalcolo in Automatico

Infine varierai l' istruzione Range("B2").Select in Range("B2").Offset(I,0).Select
La tua macro Pippo e' pronta per fare quello che chiedevi; probabilmente avrei fatto prima a scriverti le poche righe che servono, ma e' contrario ai miei principi :D :D

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi max2011 » 18/01/12 14:22

Salve,
mi dispiace ma non ci sono riuscito.

Grazie ugualmente, se magari potesse andare contro i suoi principi :D :D mi farebbe un favore, non mi farebbe perdere tanto tempo anche perchè mi serve per un sistemino che devo fare a mio padre, comunque è inutile andare oltre è contro i miei principi

Cordialmente
max2011
Utente Junior
 
Post: 59
Iscritto il: 03/11/11 16:34

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi Anthony47 » 18/01/12 15:12

Anthony ha scritto:La tua macro Pippo e' pronta per fare quello che chiedevi; probabilmente avrei fatto prima a scriverti le poche righe che servono, ma e' contrario ai miei principi :D :D

max2011 ha scritto: Grazie ugualmente, se magari potesse andare contro i suoi principi :D :D mi farebbe un favore, non mi farebbe perdere tanto tempo anche perchè mi serve per un sistemino che devo fare a mio padre, comunque è inutile andare oltre è contro i miei principi

Quando si scontrano due principi e' dura...
Se pubblichi il codice prodotto dalla registrazione macro poi insieme faremo la modifica; dopo che hai completato la registrazione della macro, da Excel basta che fai Alt-F8, seleziona il nome della macro che hai registrato (es Macro1), premi Modifica; ti si aprira' l' editor delle macro, fai Copia del listato della macro (dall' inizio a End Sub) e incollalo nel prossimo messaggio.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi Flash30005 » 18/01/12 16:45

Non per andare contro i principi, per me sacrosanti, ma
apri una nuova cartella di excel
inserisci in un modulo questa macro
e vedi i risultati

poi, semmai adatti e se non riesci, adattiamo

Codice: Seleziona tutto
Sub generaCasF()
Application.Calculation = xlManual
For FF = 1 To Worksheets.Count
For RR = 2 To 38
Sheets(FF).Range(Sheets(FF).Cells(RR, 2), Sheets(FF).Cells(RR, 38)).ClearContents
SC = 0
Ini:
Cas = Int(Rnd() * 37)
    For CC = 2 To 38
        If SC = 37 Then GoTo SaltaR
    If Sheets(FF).Cells(RR, CC).Value = "" Then GoTo Scrivi
        If Sheets(FF).Cells(RR, CC).Value = Cas Then GoTo Ini
    Next CC
Scrivi:
    For CC2 = CC To 38
    If Sheets(FF).Cells(RR, CC2).Value = "" Then
        Sheets(FF).Cells(RR, CC2).Value = Cas
        SC = SC + 1
        If SC = 37 Then GoTo SaltaR
        GoTo Ini
    End If
    Next CC2
SaltaR:
Next RR
Next FF
Application.Calculation = xlCalculationAutomatic
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi max2011 » 20/01/12 00:27

Grazie mille Flash, funziona perfettamente.

Ciaooooooooooo
max2011
Utente Junior
 
Post: 59
Iscritto il: 03/11/11 16:34

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi Zeuss99 » 13/05/12 20:04

Volevo chiedere una gentilezza se era possibile avere lo sviluppo completo dei numeri causali da 0 a 36 senza doppioni visto che non sono capace a lavorare sul foglio excel.
Grazie zeuss99
Zeuss99
Newbie
 
Post: 1
Iscritto il: 13/05/12 19:56

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi Flash30005 » 14/05/12 01:16

Ciao Zeuss99 e benvenuto nel Forum
Non è complicato copiare la macro inserirla in un modulo di una nuova cartella (file) di excel e avviare la macro

Io l'ho fatto per te e ti invio il file

Download file con macro

Puoi ottenere altre combinazioni di numeri avviando di nuovo la macro

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi Alvin73 » 10/11/12 13:10

Ciao a tutti, sono un nuovo utente

cercando per il web sono incappato in questo post, che rispecchia un po le mie esigenze

ho visto la macro e funziona bene
volevo porre una domanda, ho notato che genera le 37 righe con 37 numeri casuali "NON RIPETUTI"
(e qui vorrei generare solo 36 numeri da 1 a 36) NON RIPETUTI

ma lo fa su tutti i fogli presenti nel file excel, anche se elimino i fogli 2 e 3 e poi li inserisco anche con nome diverso, vengono sempre riempiti con i numeri, idem se ci aggiungo altri fogli del tipo foglio4 e foglio5

come è possibile fare in modo che generi solo un foglio con i numeri ?

perchè ho esigenza di fare su altro foglio "vuoto" dove importerò i numeri con la formula =Foglio1!B2 iniziando dal primo fino a finire con l'ultimo della righa che è =Foglio1!AL2 posizionati in una tabella da 3 colonne per 12 righe

come questo esempio
Immagine


a meno che non sia gia possibile creare in random almeno 20 tabelle 5 x 4 tipo questa, lasciando 4 colonne libere tra una tabella e l'altra e lasciando una riga libera tra una tabella e l'altra

Immagine

ma questo potrei farlo benissimo con l'importazione dei numeri


quindi se non disturbo troppo, vorrei generare da 1 a 36 (tot 36 numeri non ripetuti)
e un totale di 20 serie da 36 su un solo foglio


vi ringrazio anticipatamente per il vostro prezioso aiuto ;)
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi Flash30005 » 10/11/12 15:03

Ciao Alvin73 e benvenuto nel Forum

dovresti eliminare il ciclo for... next
Codice: Seleziona tutto
For FF = 1 To Worksheets.Count


che indica dal foglio1 a n fogli contenuti nella cartella
pertanto sostituisci la riga indicata con
Worksheets("Foglio1").select
'(o nome del tuo foglio)
e poi procedi
chiaramente eliminando il "Next FF"
che trovi alla fine del ciclo For... next della macro

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi Alvin73 » 10/11/12 16:21

grazie per la risposta...

ma credo di fare un po di casino, sono un po duro di comprensione :eeh:


ho tolto la riga
For FF = 1 To Worksheets.Count

sostituita con
Worksheets("Foglio1").select

(si chiama foglio1 e va bene)

eliminato la riga
Next FF

che si trova in fondo al codice


mi ritrovo con questo errore

Immagine
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi ricky53 » 10/11/12 17:07

Ciao,
la variabile "FF", che corrisponde al nome del foglio in uso, non è stata impostata.
Come prima istruzione della tua macro inserisci
Codice: Seleziona tutto
FF= "Foglio1"


oppure sostituisci tutte le "FF" con "Foglio1" (apici compresi!!!).

In definitiva le istruzioni dovranno essere
Codice: Seleziona tutto
Sub generaCasF()
    Application.Calculation = xlManual
    FF = "Foglio1"
    Worksheets(FF).Select
    For RR = 2 To 38
 '    CUT
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi Alvin73 » 10/11/12 18:49

Cavolo hai ragione.....
avevo provato infatti a rinominare tutte le FF in Foglio1, ma omettevo gli apici... :eeh:

non ho ben capito a cosa serve:
' CUT
alla fine, io ho fatto senza


a questo punto che ci sono, vorrei chiederti altre 2 cose, sicuramente banali per te

adesso genera numeri da 0 a 36, vorrei fare da 1 a 36

adesso genera 37 stringhe (righe) da 37
ne vorrei generare solo 20 e ovviamente come detto sopra da 36
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi Alvin73 » 10/11/12 23:16

ad una delle 2 richieste ci sono arrivato

cambiando il valore .....For RR = 2 To 37......in......For RR = 2 To 21

fa esattamente 20 righe da 37 numeri

quindi una volta capito come fare a generare solo numeri da 1 a 36 e non da 0 a 36 come fa adesso, si dovrà cambiare anche il valore......For CC = 2 To 38.... in....For CC = 2 To 37

ma solo dopo aver impostato il random da 1 a 36


questa è la stringa per far generare i numeri da 0 a 36

Cas = Int(Rnd() * 37)

come fare a generare solo num da 1 a 36 ?
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi Flash30005 » 10/11/12 23:51

Codice: Seleziona tutto
Cas = Int(Rnd() * 36)+1


E' bene, comunque inizializzare il numero randomico con
Codice: Seleziona tutto
Randomize(Timer)

prima di inziare il ciclo di generazione del numero casuale

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi Alvin73 » 11/11/12 01:12

Flash30005 ha scritto:
Codice: Seleziona tutto
Cas = Int(Rnd() * 36)+1


E' bene, comunque inizializzare il numero randomico con
Codice: Seleziona tutto
Randomize(Timer)

prima di inziare il ciclo di generazione del numero casuale

ciao





Grazie infinite.......

consigli di inserire anche la stringa completa del randomize così ?

Randomize(Timer)
Cas = Int(Rnd() * 36)+1

inserendola viene usato il timer del computer per la generazione se ho ben capito...
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi Flash30005 » 11/11/12 11:24

Randomize(Timer)
la dovresti inserire prima del ciclo For... next di RR
e serve perché, se non inizializzato, la prima generazione di numeri sarà sempre uguale
Per fare la prova (senza uso di Randomize)
apri il file di excel
fai una sequenza di numeri casuali
salvi questi numeri in un altro foglio oppure altro file
chiudi il file con la macro
riapri il file ed esegui di nuovo un ciclo random
confronta i numeri con quelli salvati precedentemente.

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel 2007 matrice numeri casuali da 0 a 36 senza doppio

Postdi Alvin73 » 12/11/12 22:14

un grazie infinito, per avermi aiutato.....
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44


Torna a Applicazioni Office Windows


Topic correlati a "Excel 2007 matrice numeri casuali da 0 a 36 senza doppioni":


Chi c’è in linea

Visitano il forum: Nessuno e 49 ospiti