Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Macro per creazione di gruppi casuali

Ultimo Aggiornamento: 24/04/2019 11:52
Post: 1
Registrato il: 17/04/2019
Città: MILANO
Età: 34
Utente Junior
2007
OFFLINE
23/04/2019 17:14

Salve a tutti. Sono nuovo del forum e mi occorre il vostro aiuto anche perché è da poco tempo che mi cimento con le macro. Vi espongo il problema: devo creare una macro che mi generi dei gruppi casuali di numeri! Tramite inputbox devo inserire di quanti gruppi necessito, di quanti numeri dispongo e quanti numeri vanno inseriti per gruppo.
La macro deve poi riportare in un foglio i gruppi casuali prodotti.
Ho risolto il problema immaginando la macro come l'estrazione delle squadre dei mondiali!
Purtroppo la mia macro non gira 😅 per errori legati sicuramente alla sintassi o al tipo di definizione che attribuisco agli elementi.
Di seguito riporto quanto ho scritto. Vi sarei infinitamente grato se mi aiutaste, devo completare questo progetto per il rientro a scuola e sto impazzendo! vi ringrazio in anticipo!

Sub w()
Dim Posizione As Integer
Dim Estratti As Integer
Dim Squadre As Integer
Dim Gironi As Integer
Dim SquadrePerGirone As Integer

Squadre = InputBox("Numero di Squadre")
Gironi = InputBox("Numero Gironi")
SquadrePerGirone = InputBox("Numero di Squadre per Girone")

Dim Numeri(1 To Squadre)
Dim Sorteggiati(1 To Squadre)

Randomize
For Index = 1 To Squadre
Numeri(Index) = Index 'costruisco il vettore in ordine dal più piccolo al più grande
Next Index

'costruisco con il seguente ciclo il sorteggio casuale riempendo il vettore sorteggiati

For i = 1 To Squadre
Posizione = Int((Squadre + 1 - i) * Rnd + 1)
Sorteggiati(i) = Numeri(Posizione)
Numeri(Posizione) = Numeri(Squadre - i + 1)

Next

'inserisco il contenuto dei vettori nelle celle del foglio
n = 1
For Col = 3 To Gironi + 2
For Riga = 2 To SquadrePerGirone
Cells(Riga, Col).Value = Cells(Numeri(n), 1).Value
n = n + 1
Next Riga
Next Col

End Sub
Post: 5.655
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
23/04/2019 17:30

Gruppi casuali
Ciao Exceller, inserisci un file d'esempio,

Leggi QUI

Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 3
Registrato il: 17/04/2019
Città: MILANO
Età: 34
Utente Junior
2007
OFFLINE
23/04/2019 18:00

Sub w() 
Dim Posizione As Integer 
Dim Estratti As Integer 
Dim Squadre As Integer 
Dim Gironi As Integer 
Dim SquadrePerGirone As Integer 

Squadre = InputBox("Numero di Squadre") 
Gironi = InputBox("Numero Gironi") 
SquadrePerGirone = InputBox("Numero di Squadre per Girone") 

Dim Numeri(1 To Squadre) 
Dim Sorteggiati(1 To Squadre) 

Randomize 
For Index = 1 To Squadre 
Numeri(Index) = Index 'costruisco il vettore in ordine dal più piccolo al più grande 
Next Index 

'costruisco con il seguente ciclo il sorteggio casuale riempendo il vettore sorteggiati 

For i = 1 To Squadre 
Posizione = Int((Squadre + 1 - i) * Rnd + 1) 
Sorteggiati(i) = Numeri(Posizione) 
Numeri(Posizione) = Numeri(Squadre - i + 1) 

Next 

'inserisco il contenuto dei vettori nelle celle del foglio 
n = 1 
For Col = 3 To Gironi + 2 
For Riga = 2 To SquadrePerGirone 
Cells(Riga, Col).Value = Cells(Numeri(n), 1).Value 
n = n + 1 
Next Riga 
Next Col 

End Sub
Post: 3.740
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
23/04/2019 19:59

Forse in Italianesco = https://www.freeforumzone.com/d/11202105/-COLORE-BLUE-FONT-BOLD-ATTENZIONE-SCARICARE-o-INSERIRE-un-FILE-ed-ALTRO-VEDI-QUI-/discussione.aspx
Excel 2013
Post: 2.195
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
24/04/2019 11:16

Ciao
dalla macro si capisce che non c'è bisogno di allegare nessun esempio in quanto la stessa "dovrebbe" generare una tabella senza utilizzare dati presenti nel foglio.

Ciò premesso, e senza entrare nel merito della tua macro, correggo quanto segue in quanto sintatticamente errato:

ReDim Numeri(1 To Squadre)
ReDim Sorteggiati(1 To Squadre)


Cells(Riga, Col).Value = Numeri(n)

Con queste correzioni la macro gira, ma a quanto dare i risultati voluti.....

saluti
[Modificato da dodo47 24/04/2019 11:19]
Domenico
Win 10 - Excel 2016
Post: 4
Registrato il: 17/04/2019
Città: MILANO
Età: 34
Utente Junior
2007
OFFLINE
24/04/2019 11:24

ho caricato un esempio funzionante di quello che mi occorre. Ovviamente i dati di input, come indicato in apertura della discussione, mi occorrono tramite inputbox e non dichiarati come i questo esempio. Spero di essere stato chiaro! Grazie in anticipo per l'aiuto
Post: 5
Registrato il: 17/04/2019
Città: MILANO
Età: 34
Utente Junior
2007
OFFLINE
24/04/2019 11:52

Grazie Dodo47! era il maledetto ReDim che mi bloccava!

Grazie! ora cercherò di completarlo! Sperando non vi siano altri intoppi😀😀😀😀

Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 06:40. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com