Condividi:        

Sorteggio Casuale

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

Sorteggio Casuale

Postdi geri21 » 26/04/10 10:23

In un foglio excel in col.A si ha una serie di nomi, in col.B,stessa riga,i nomi dei rispettivi compagni, ovvero circa 80 nomi formanti 40 inseparabili coppie. In altre colonne vorrei inserire una formula che estragga causalmente senza ripetizione, i nomi delle coppie già inserite in col.A e col.B.
In attesa di suggerimenti si ringrazia.
geri21
Utente Junior
 
Post: 54
Iscritto il: 24/07/08 07:32

Sponsor
 

Re: Sorteggio Casuale

Postdi ricky53 » 26/04/10 10:58

Ciao,
come te la cavi con il VBA?

Non ho molto tempo, forse di pomeriggio, ci provo ma non prometto nulla.

Sicuramente tra un po il "MACROISTA" di Flash ti propone una sua soluzione.

Ciao da Ricky53
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Sorteggio Casuale

Postdi Flash30005 » 26/04/10 11:42

Non mi è chiara la situazione

1) I nomi in A sono già i nomi della coppia?
es.
Paperina Paperino
Topolina Topolino
e in B hai gli 80 nomi singoli
In B
Paperina
paperino
Topolina
Topolino
etc.

oppure hai i nomi singoli in A (donne) e singoli in B (uomini)?
es.
in A
Paperina
Topolina
in B
Paperino
Topolino
etc
In questo caso hai, per 40 coppie, 40 righe non 80 come dici di avere

2) Tu vorresti mantenere la coppia Paperina Paperino e cambiare solo l'ordine inserendo un ordine casuale,
oppure vuoi scombinare le coppie e avere Paperina Topolino etc etc?

Fai sapere

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Sorteggio Casuale

Postdi geri21 » 26/04/10 11:49

La seconda interpretazione è quella esatta.
grazie.
geri21
Utente Junior
 
Post: 54
Iscritto il: 24/07/08 07:32

Re: Sorteggio Casuale

Postdi ricky53 » 26/04/10 11:50

Ciao,
prova questa macro, l'ho scritta velocemente ma per me fa quello che hai scritto, forse può essere ottimizata.
Provala e ...

Codice: Seleziona tutto
Public RR As Integer, SS As Integer, I As Integer, J As Integer
Public Numero_casuale As Integer

Sub Seleziona_Coppie()
' Tutte le coppie sono in colonna "A"  e "B"
' Le copiie selezionate sono in colonna "D"  e  "E"
' Per colonne divese da "D" (colonna 4)  e  "E" (colonna 5) modificare le istruzioni che fanno riferimenti a queste colonne e valori
   
    RR = Range("A" & Rows.Count).End(xlUp).Row
    SS = Range("D" & Rows.Count).End(xlUp).Row
    Range("D2:E" & SS).ClearContents
   
    For I = 2 To RR
Riprova:
        SS = Range("D" & Rows.Count).End(xlUp).Row
        If SS < 2 Then
            SS = 2
        End If
   
        Numero_casuale = Int((RR + 1) * Rnd())
        If Numero_casuale = 0 Or Numero_casuale = 1 Then
            Numero_casuale = 2
        End If
            For J = 2 To SS
'QUI
                If Cells(J, 4) = Cells(Numero_casuale, 1) Then
                    GoTo Riprova
                End If
            Next J
'QUI
        If Cells(2, 4) = "" Then
            J = 2
        End If
'QUI
        Cells(J, 4) = Cells(Numero_casuale, 1)
        Cells(J, 5) = Cells(Numero_casuale, 2)
    Next I
    MsgBox "Sono state selezionate  '" & RR - 1 & "'  Coppie in modo casuale"
End Sub


E' commentata.

Ciao da Ricky53
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Sorteggio Casuale

Postdi ricky53 » 26/04/10 11:54

Caspita ci siamo sovrapposti.

Io ho fatto li'ipotesi che ci fosse una gara di ballo e che dovessero essere selezionate le coppie (a componenti fissi) in modo per entrare in pista casuale:
E' così?

Ciao da Ricky53.
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Sorteggio Casuale

Postdi geri21 » 26/04/10 11:57

Se non mi dai suggerimenti passo-passo non saprei come utilizzare il Tuo suggerimento !!!
Una formula con excel sarebbe più a mia portata !!!
grazie
geri21
Utente Junior
 
Post: 54
Iscritto il: 24/07/08 07:32

Re: Sorteggio Casuale

Postdi ricky53 » 26/04/10 12:11

Ciao,
Non hai detto se la mia ipotesi è corretta !!!
Altrimenti la macro non va bene.

La vedo complicata con le formule.

Allora:
apri il foglio che ti interessa e:

Alt+F11 e vai nell'editor del VBA
nel progetto che si apre tasto destro, inserisci, modulo
copi la macro
per eseguirla "F5"

poi la puoi associare ad un tasto di combinazioe rapida ...

cerca nella guida e ... vai avanti da solo che riesci.

Ciao da Ricky53
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Sorteggio Casuale

Postdi Flash30005 » 26/04/10 12:52

Geri21 non risponde alle domande per risolvere il suo problema. :roll:

Invio questo file poi se lo adatterà alle sue esigenze.

Il file con la macro ordina in ordine casuale i nomi che sono scritti nella colonna A

Pubblico la macro per l'utilizzo da parte di altri utenti
Codice: Seleziona tutto
Sub Sorteggia()
UR = Range("A" & Rows.Count).End(xlUp).Row
    Range("C2:D" & UR).Clear
Ripeti:
For Each S In Range("C2:C" & UR)
If S.Value = 0 Then
Cas = Int(Rnd() * 20) + 2
If Range("C" & Cas).Value = 1 Then GoTo salta
Range("C" & Cas).Value = 1
UA = Range("D" & Rows.Count).End(xlUp).Row + 1
Range("D" & UA).Value = Range("A" & Cas).Value
salta:
End If
Next S
ContaV = 0

For TV = 2 To UR
If Range("C" & TV).Value = 0 Then
ContaV = ContaV + 1
End If
Next TV
If ContaV > 0 Then GoTo Ripeti
End Sub



Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Sorteggio Casuale

Postdi raimea » 26/04/10 18:55

ok
confermo che la macro di flash funziona
allego un file dove ho solo adattato piccolezze tipo
portato a 100 il num di nomi da poter inserire
un tasto reset e una x ordine alfabetico

http://rapidshare.com/files/380449694/SorteggioCasuale.zip.html
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: Sorteggio Casuale

Postdi ricky53 » 26/04/10 20:00

Ciao,
e tu hai osato pensare che non funzionasse una macro del grande FLASH e l'hai pure provata !!!!

Gravissimo.
Fecezie a parte torniamo alla discussione:

Stiamo attendendo informazioni da Geri21.

Ciao da Ricky53
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Sorteggio Casuale

Postdi geri21 » 26/04/10 20:11

Scusate l' improvviso silenzio dovuto ad imprevisti.
Innanzitutto si ringrazia il V/s manifesto e sollecito interesse al problema esposto che, di seguito tento di riesporre più chiaramente.
Trattasi del solito lavoro per la gestione di tornei di burraco, già di vostra conoscenza.
Da colonna D8 a col. D47 vengono digitati i nomi dei concorrenti.
Nella stessa riga, da colonna E8 a col. E47 i nomi dei rispettivi soci/e.
Per evitare possibili preventivi accordi tra rivali è doveroso che gli abbinamenti al primo turno siano casuali.
Quindi, appare opportuno che inseriti i nomi delle coppie partecipanti, questi assumano posizioni casuali alla prima partita.
Pertanto la formula richiesta dovrebbe soddisfare questo quesito.
Ho tentato anche di attivare la prima macro inserita nei forum, purtroppo successivamente aver cliccato sul pulsante per attivarla, excel 2007 non risponde, costringendomi al spegnere il pc in modo inconsueto.
Grazie, siete magnifici !!!!
geri21
Utente Junior
 
Post: 54
Iscritto il: 24/07/08 07:32

Re: Sorteggio Casuale

Postdi raimea » 26/04/10 20:28

excel 2007 e' andava in tilt xche la macro era settata x 20 o 30 nomi
prova a scaricare il file sopra dove ho portato a 100 il num di partecipanti e fai sapere
ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: Sorteggio Casuale

Postdi Flash30005 » 26/04/10 20:57

Ma scusate c'è qualcosa di incompreso in tutto ciò
la mia macro mette in ordine casuale qualsiasi nome esistente da A2 a A10, A100, A1000 infatti calcola quante righe dovrà combinare casualmente è chiaro che più righe sono e più è difficile intercettare l'ultimo concorrente ancora da abbinare.
Ammettiamo di aver inserito 1000 nomi
i primi 700 li colloca subito
poi (leggendo la macro) fa un controllo di celle ancora da sistemare e ricomincia la casualità
per riempire le celle in C (colonna nascosta) che non è ancora attribuita e ne sistemerà altre 250
rieffettua il controllo trova ancora 50 celle vuote ma chiaramente le rielabora tutte completandone altre 49
Adesso immaginatevi di intercettare casualmente l'unica cella rimasta da collocare rispetto alle 999 già collocate (qui forse ottimizzando la mcro si potrebbe attribuire all'unico spazio vuoto terminando velocemente la routine)
Ma sapendo che i nomi non sono più di 40 (perché sono 80 coppie) di cui 40 in A e 40 in B avrete in D i concorrenti che si accoppiano con i nomi in B molto velocemente.
Se desiderate invece abbinare i concorrenti in A con i concorrenti casuali che sono in B è sufficiente cambiare la riga di ordinamento casuale
Codice: Seleziona tutto
Range("D" & UA).Value = Range("A" & Cas).Value

con
Codice: Seleziona tutto
Range("D" & UA).Value = Range("B" & Cas).Value

e avrete fissi i 40 nomi di A e casuali i nomi che sono in B riportati nella colonna D

E' tutto chiaro ora?
Ciao

P.s. Vi ricordo che se office 2003, per effettuare una elaborazione, impiega 1 minuto Office 2007 impiega 3 volte tanto (3 minuti) per via della compressione degli oggetti che tale applicativo adopera (MS preferisce avere file più piccoli in un'epoca dove i dischi sono diventati di terabyte e rallentare il calcolo, questa è, a mio avviso, una scelta sbagliatissima, ma è così)
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Sorteggio Casuale

Postdi ricky53 » 26/04/10 23:29

Ciao,
ma non è stata presa in considerazione la mia proposta.

Vista a distanza di tempo non è proprio male !!!

Quasi quasi mi offendo !!!

Forza provala.

Ciao da Ricky53
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Sorteggio Casuale

Postdi ricky53 » 26/04/10 23:45

Ciao,
ho riletto
... Ho tentato anche di attivare la prima macro inserita nei forum, purtroppo successivamente aver cliccato sul pulsante per attivarla, excel 2007 non risponde, costringendomi al spegnere il pc in modo inconsueto ...


Ti riferivi alla mia macro ???

Se è così allora prova ad eseguirla con "F8" (esegue una istruzione alla volta) e vedi cosa fa.

Con il 2003 per generare "50" coppie casuali impiega meno di "1" secondo, per "500" coppie impiega circa "6" secondi.
Tempi validissimi direi.
Con il 2007 saranno almeno triplicati.

Ciao da Ricky53
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Sorteggio Casuale

Postdi Flash30005 » 27/04/10 08:44

La macro di Ricky funziona molto bene,
l'ho testata proprio ora
Comunque per non vincolare il numero casuale ad un numero fisso e dover mettere le mani nella macro ogni volta
è opportuno modificare nella mia macro questo codice
Codice: Seleziona tutto
Cas = Int(Rnd() * 100) + 2

con
Codice: Seleziona tutto
Cas = Int(Rnd() * UR) + 2

dove UR è il numero delle righe e quindi dei partecipanti da ordinare casualmente

In quella di Ricky è già prevista questa condizione

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Sorteggio Casuale

Postdi geri21 » 27/04/10 09:07

In un nuovo foglio ho provato ad attivare la macro di Flash prodotta alle ore 13.52 con la seguente procedura:
Scheda Sviluppo/Visual Basic/Inserisci/Modulo, poi copia ed incolla la macro.
Ancora clic su: Esegui/Esegui SubForm F5.
Dopo ciò in colonna C appaiono due numeri 1, e ad ogni successivo clic in Esegui SubForm F5 gli “1” aumentano di due, più precisamente (dopo cinque clic appaiono 10 numeri 1).
Grazie geri21
geri21
Utente Junior
 
Post: 54
Iscritto il: 24/07/08 07:32

Re: Sorteggio Casuale

Postdi geri21 » 27/04/10 11:31

A completamento del messaggio precedente.
Ho scaricato il file da RapidShare.
Si è constatato che cliccando su “Sorteggia” la macro funzione nella maniera voluta.
Ma cancellando l’ultima o le ultime lettere di colonna A e cliccando poi su Sorteggia l’intera colonna D viene spostata verso il basso, in corrispondenza dell’ultima lettera di col. A.
A perfezionamento preciso che: i nomi dei concorrenti vengono inseriti da D8 a D47 e nella cella a fianco , col. E, il nome del rispettivo socio/a. ES:
D8…..Topolino……E8….Topolina
D9…..Paperino…..E9….Paperina
D10..Tom…………..E10…Jerry
Dopo il sorteggio casuale deve variare solo la posizione della coppia e non la composizione.
Es:
D8.…Paperino………E8….Paperina
D9….Tom……………..E9….Jerry
D10..Topolino………E10..Topolina
Inoltre, nella ipotesi che per mancanza di concorrenti alcune celle comprese tra D8 a D47 e da E8 a E47 rimanessero vuote, il sorteggio della prima coppia deve comunque partire da D8 e E8, la seconda in D9 e E9 e così fino all’ultima coppia.
Grazie.
geri21
Utente Junior
 
Post: 54
Iscritto il: 24/07/08 07:32

Re: Sorteggio Casuale

Postdi Flash30005 » 27/04/10 12:11

Si può fare tutto ma se si stravolge l'origine dei dati, i programmi non funzionano più.

Ora dici che i dati di origine sono da D8 a E47 e vorresti averli in ordine casuale nella stessa area
ma ciò non è possibile se prima non si spostano altrove
fai sapere se gli stessi dati origine li hai anche nelle colonne A e B da 8 a 47
e vuoi ottenere l'ordine casuale nelle due colonne D e E
oppure se hai delle colonne libere da utilizzare per questo scopo


ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Sorteggio Casuale":


Chi c’è in linea

Visitano il forum: Nessuno e 39 ospiti