Aiutamici Forum
Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

Numeri casuali Opzioni
mblu
Inviato: Wednesday, December 14, 2005 1:10:47 PM
Rank: AiutAmico

Iscritto dal : 6/28/2005
Posts: 58
Ciao a tutti,
devo effettuare un sorteggio di numeri, compreso in un certo intervallo. Ho provato la formule di excel (casuale.tra(x;y) ma volevo sapere se c'era in giro qualcosa di più sofisticato come per esempio la certezza di non sorteggiare due volte lo stesso numero, quando si è definito l'intervallo.
Grazie per l'aiuto

ciao
Sponsor
Inviato: Wednesday, December 14, 2005 1:10:47 PM

 
a10n11
Inviato: Wednesday, December 14, 2005 4:18:25 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
se sei pratico nel maneggiare le macro
qui:
http://www.erlandsendata.no/english/index.php?d=enfunctionsmiscrandom
trovi il lavoro già pronto, serve solo adattare il codice alle tue esigenze. In caso di difficoltà chiedi pure.
saluti
Andrea


mblu
Inviato: Wednesday, December 14, 2005 6:24:45 PM
Rank: AiutAmico

Iscritto dal : 6/28/2005
Posts: 58
Ciao,
devo copiare il listato così com'è in una macro? Come? E se volessi estrarre per es. numeri compresi fra 10 e 85 , cosa dovrei fare ?
Forse ti chiedo troppo ad ogni modo ti ringrazio.
ciao
a10n11
Inviato: Wednesday, December 14, 2005 7:39:32 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve non devi copiare il listato per intero, perchè esso mostra tre possibili ipotesi.
devi scegliere quella che ti va bene. Estrazione di quanti numeri? su unica riga? su unica colonna? su una tabella di 5 righe e 5 colonne??
puoi estrarre i numeri casuali condizionandoli come vuoi.
se mi dici quanti numeri casuali devi estrarre e come vedo di modificarti la macro.
saluti
Andrea

mblu
Inviato: Thursday, December 15, 2005 10:21:20 AM
Rank: AiutAmico

Iscritto dal : 6/28/2005
Posts: 58
In genere devo estrarre un numero variabile di numeri (in pratica un sorteggio) entro un certo intervallo anch'esso variabile.
Ma se non devo copiare la macro, come faccio a farlo riconoscere da excel? Ovvero come devo operare?
Grazie per l'aiuto e la pazienza che hai.
Ciao
a10n11
Inviato: Thursday, December 15, 2005 10:47:09 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
Forse mi sono spiegato male. La macro va per forza riportata su un modulo VBA ma siccome la macro che hai visto rappresenta 3 possibili metodi di estrazione, devi scegliere quello che a te va bene.
In giornata vedo di mandarti la macro corretta ipotizzando che tu voglia estrarre 10 numeri causali non replicati compresi tra un intervallo da 10 a 80
saluti
Andrea

a10n11
Inviato: Thursday, December 15, 2005 11:26:59 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
Eccoti la modifica alla macro:
Nel caso servisse due note per applicarla:
Dal foglio Excel Alt+F11 apri la finestra VBA
dal Menu Inserisci scegli "Modulo", ci ricopi pari pari tutto il codice che trovi qui sotto. Dopo copiato di nuovo Alt+F11 per tornare al foglio Excel. Per lanciare la Macro Menu Strumenti)Macro>Macro selezioni dalla finestra che appare la macro "Numeri Casuali" e clicchi su esegui.

'------
'funzione prelevata dal sito www.Erlandsendata.no
' modificata ed adatttata 15/12/05

Function UniqueRandomNumbers(NumCount As Long, LLimit As Long, ULimit As Long) As Variant
' crea un array con NumCount unico di numeri casuali interi
' nel range LLimit - ULimit
Dim RandColl As Collection, i As Long, varTemp() As Long
UniqueRandomNumbers = False
If NumCount ( 1 Then Exit Function
If LLimit > ULimit Then Exit Function
If NumCount > (ULimit - LLimit + 1) Then Exit Function
Set RandColl = New Collection
Randomize
Do
On Error Resume Next
i = CLng(Rnd * (ULimit - LLimit) + LLimit)
RandColl.Add i, CStr(i)
On Error GoTo 0
Loop Until RandColl.Count = NumCount
ReDim varTemp(1 To NumCount)
For i = 1 To NumCount
varTemp(i) = RandColl(i)
Next i
Set RandColl = Nothing
UniqueRandomNumbers = varTemp
Erase varTemp
End Function


Sub NumeriCasuali()
Dim varrRandomNumberList As Variant, cl As Range, i As Long, X As Long, Y As Long
Dim Z As Long, R As Long
' dichiaro quanti numeri voglio estrarre
X = InputBox("Quanti numeri vuoi estrarre", "NUMERI DA ESTRARRE")
'dichiaro il numero più basso da estrarre casualmente
Y = InputBox("Numero più basso", "DICHIARA IL LIMITE INFERIORE")
'dichiaro il numero più alto da estrarre casualmente
Z = InputBox("Numero più alto", "DICHIARA IL LIMITE SUPERIOREE")
'dichiaro la riga dove scrivere i risultati
R = InputBox("In che riga scrivere?", "DICHIARA LA RIGA DOVE METTERE IL RISULTATO")
varrRandomNumberList = UniqueRandomNumbers(X, Y, Z)
For Each cl In Range(Cells(R, 1), Cells(R, X))
i = i + 1
cl.Formula = varrRandomNumberList(i)
Next cl
Set cl = Nothing
End Sub

'---------

Come puoi vedere, ho modificato in modo che la macro all'avvio ti chiede quanti numeri vuoi estrarre, qual'è il limite inferiore e qual'è il limite superiore e in che riga vuoi scrivere il risultato.
Buon lavoro
Andrea



mblu
Inviato: Saturday, December 17, 2005 8:36:27 AM
Rank: AiutAmico

Iscritto dal : 6/28/2005
Posts: 58
Ciao Andrea,
ho voluto provare la macra con un sempio: numeri da estrarre 15; min 1 max 80 ; riga in cui estrarre 6 la macro mi risponde con: errore di compilazione; errore di sintassi. Probabilmente sbaglio qualcosa.
Puoi dirmi dove sbaglio?
Ti ringrazio
ciao
a10n11
Inviato: Saturday, December 17, 2005 10:03:15 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
Non Hai sbagliato tu a copiare ma è il solito errore che purtroppo accade qua.
Nella riga qui sotto il simbolo di minore è stato trasformato in parentesi tonda.

If NumCount ( 1 Then Exit Function

modifica così:
If NumCount "segno di minore" 1 Then Exit Function
dove segno di minore è rappresentato da(<)
saluti
Andrea


Edited by - a10n11 on 12/17/2005 10:05:09

mblu
Inviato: Saturday, December 17, 2005 3:30:05 PM
Rank: AiutAmico

Iscritto dal : 6/28/2005
Posts: 58
Tutto Ok!
Grazie e auguri

ciao
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.