Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Exel - Estrazioni random e creazione gruppi con condizioni

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

Exel - Estrazioni random e creazione gruppi con condizioni

Postdi Kristo » 01/04/13 20:42

Ciao a tutti,
innanzitutto complimenti per il forum, ci sono capitato "per caso" cercando informazioni in merito ad un problema che devo risolvere, e devo dire che c'è veramente tanto materiale ed ottima professionalità.

Pur avendo letto una marea di topic, prima di aprirne uno nuovo (sempre meglio evitare doppioni se si può), non riesco a trovare risposta o una linea guida ad un problema che devo risolvere.

Il quesito è questo:

a partire da un elenco di 2 colonne (Autovettura / proprietario) ed "n righe", dovrei estrarre quindi "n" gruppi di "p" conducenti in modo tale che:

1) a ciascuna autovettura vengano assegnati "p" conducenti (distinti) estratti a caso tra l'elenco dei proprietari. Si deve evitare che nel gruppo compaia il proprietario stesso dell'autovettura.

2) a ciascun proprietario venga assegnato quindi un elenco di "p" autovetture distinte. Si deve sempre evitare che nell'elenco ci sia la vettura di sua proprietà.

quindi tutte le vetture devono essere assegnate a "p"conducenti (dalla lista dei proprietari ad esclusione del proprietario della vettura stessa) e tutti i proprietari devono essere assegnati a "p" autovetture (dalla lista delle autovetture, ad esclusione della propria)

sinceramente, non sono sicuro di essermi riuscito a speigare :lol: :lol: :lol:
Kristo
Newbie
 
Post: 4
Iscritto il: 01/04/13 20:27

Sponsor
 

Re: Exel - Estrazioni random e creazione gruppi con condizio

Postdi Anthony47 » 01/04/13 23:47

Ciao Kristo, benvenuto nel forum.
Scusa, stai mica cercando di vendere la stessa vettuta a N persone?
Comunque io a leggere la descrizione "mi sono sconfuso": ma l' obiettivo 1 e 2 non sono la stessa cosa? E perche' parli di "n gruppi" e "p conducenti" se n e p sono uguali? E comunque se n e' il numero di righe dovresti parlare di "n-1" gruppi...
Insomma ti chiederei un supplemento di chiarimenti, magari partendo dall' obiettivo finale (il problema reale da risolvere) non da come hai pensato di risolverlo.
Questo stasera; magari domattina leggero' il tuo quesito differentemente...

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: Exel - Estrazioni random e creazione gruppi con condizio

Postdi Kristo » 02/04/13 09:09

Forse hai ragione :lol: :lol:

perdonami.

Vediamo un attimo allora di spiegare qual è il problema Reale allora...

Ho un hobby, il CAR AUDIO (ascolto degli impianti stereo delle auto, comodamente seduti sul sedile di guida), ed abbiamo come gruppo "inventato" un nuovo tipo di evento, che comporta la soluzione appunto del problema proposto

Poniamo che si iscrivano all'evento 30 concorrenti (appunto gli "n" che pensavo). Ovviamente il numero di concorrenti non può essere prevedibile a priori.
Ogni concorrente si presenta in gara con la sua auto. (ecco l'abbinamento tra autovettura e proprietario).

Da regolamento dell'evento, così come pensato, i concorrenti iscritti (quindi i 30) sono sia concorrenti (con le proprie auto) sia "giudici", nei confronti delle auto degli altri.

1) ciascuna auto deve essere valutata da 6 giudici (avevo utilizzato "p" perchè potrebbe anche essere diverso da 6) estratti casualmente dall'elenco dei concorrenti iscritti.
Ovviamente il proprietario non può valutarsi da solo la sua auto.

L'idea è quella di coinvolgere, alla fine, tutti gli iscritti anche nel ruolo di giudice (su autovetture differenti) in maniera omogenea. Quindi suppongo debba sussistere anche un vincolo sul numero massimo di valutazioni che può fare il singolo giudice, cioè un vincolo sulle ripetizioni massime accettabili durante le 30 estrazioni dei 6 giudici.
Questo vincolo lo avevo immaginato sempre uguale a 6 (o a "p") ma mi è venuto il dubbio che non sia corretto...
Kristo
Newbie
 
Post: 4
Iscritto il: 01/04/13 20:27

Re: Exel - Estrazioni random e creazione gruppi con condizio

Postdi Anthony47 » 03/04/13 01:26

Per questo ovviamente serve una macro, e mi pare che questa produca un risultato verosimile:
Codice: Seleziona tutto
Sub kkris()
Dim PTarga As String, PTeam As Long, NRand As String, EachNom As String, Crew As Long
Dim NumNom As Long, CMax As Long, myMax As Long, myRand As Long, CMin As Long
Dim I As Long, J As Long, K As Long, myCurr As Long, myTim As Single, Incr As Long
'
PTarga = "C3"   '<<< Cella con prima targa, in verticale
EachNom = "D1"  '<<< Cella col numero di persone per gruppo
'
NumNom = Range(PTarga).Offset(1000, -1).End(xlUp).Row - Range(PTarga).Row + 1
Crew = Range(EachNom).Value
If Crew > (NumNom - 1) Then
    MsgBox ("Gruppi impossibili da creare, il processo sara' terminato")
    Exit Sub
End If
'
Range(PTarga).Offset(-1, 1).Resize(NumNom + 3, 100).Clear
'
myTim = Timer
    For J = 1 To NumNom
        PTeam = Range(PTarga).Offset(J - 1, 1).Column
        For I = 1 To Range(EachNom).Value
reRand:
            DoEvents
            If Timer > myTim + 1 Or Timer < myTim Then
                Incr = 1   'dlock solver
            End If
            myRand = Int(Rnd() * NumNom)
            NRand = Range(PTarga).Offset(myRand, -1).Value  'random name
    'dati statistici di bilanciamento:
            CMax = Evaluate("=MAX(COUNTIF(" & Range(PTarga).Resize(NumNom, 1 + Crew).Address & "," & _
                Range(PTarga).Offset(0, -1).Resize(NumNom, 1).Address & "))")
            CMin = Evaluate("=MIN(COUNTIF(" & Range(PTarga).Resize(NumNom, 1 + Crew).Address & "," & _
                Range(PTarga).Offset(0, -1).Resize(NumNom, 1).Address & "))")
            myMax = Application.WorksheetFunction.CountIf(Range(PTarga).Resize(NumNom, 1 + Crew), _
                    NRand)
            myCurr = Application.WorksheetFunction.CountIf(Range(PTarga).Offset(J - 1, -1).Resize(1, 1 + Crew), _
                    NRand)
            If myMax >= (CMax + Incr) And CMax > CMin Then GoTo reRand
            If myCurr > 0 Then GoTo reRand
    'compila il gruppo:
            Range(PTarga).Offset(J - 1, I).Value = NRand
            Incr = 0: myTim = Timer
        Next I
    Next J
End Sub
Da Excel, Alt-F11 per aprire l' editor delle macro; poi Menu /Inserisci /Modulo; copia il codice e incollalo nel frame vuoto di dx.
Personalizza le istruzioni marcate <<<

La macro presuppone che sia stato creato un elenco come da immagine (colonne in giallo)
Immagine

Uploaded with ImageShack.us
Le istruzioni da personalizzare indicano quale e' la cella che contiene la prima targa (C3, nell' esempio) e la cella in cui e' specificato la numerosita' dei gruppi di valutazione da creare (D1, nell' esempio); in effetti la colonna A con la sua numerazione non e' richiesta.

Eseguendo poi la macro le celle alla destra della singola targa verranno CANCELLATE SENZA PREAVVISO e verranno compilate con i nominativi scelti casualmente.

Fai sapere se in questo modo risolvi.

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: Exel - Estrazioni random e creazione gruppi con condizio

Postdi Kristo » 03/04/13 11:07

Clamoroso!!!

mi sembra proprio che funzioni... con tutte le condizioni del caso!!!

Ma una domanda... l'hai scritta "da zero" appositamente per me????

:oops: :oops: :oops: :oops:
Kristo
Newbie
 
Post: 4
Iscritto il: 01/04/13 20:27

Re: Exel - Estrazioni random e creazione gruppi con condizio

Postdi ricky53 » 03/04/13 12:16

Ciao
allora non conosci il grande Anthony !!!
Eh, Eh !!!

Il codice che ti ha inviato è stato scritto e opportunamente personalizzato per te.
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: Exel - Estrazioni random e creazione gruppi con condizio

Postdi Anthony47 » 03/04/13 12:17

Il codice che ti ha inviato è stato scritto e opportunamente personalizzato per te.
Ricky, cosi' mi costringi ad abbassare la fattura... mannaggia.
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: Exel - Estrazioni random e creazione gruppi con condizio

Postdi ricky53 » 03/04/13 12:23

Ciao,
al contrario avendo fatto presente che hai lavorato appositamente per lui si tratta di prestazioni professionali specifiche e quindi soggette ad una tariffa speciale e ... maggiorata, OVVIAMENTENTE !!!
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: Exel - Estrazioni random e creazione gruppi con condizio

Postdi Kristo » 03/04/13 15:52

ricky53 ha scritto:Ciao,
al contrario avendo fatto presente che hai lavorato appositamente per lui si tratta di prestazioni professionali specifiche e quindi soggette ad una tariffa speciale e ... maggiorata, OVVIAMENTENTE !!!


o porca miseria.... sono fregato!!!

comunque... veramente... non ho parole!!!!

grazie 10000000
Kristo
Newbie
 
Post: 4
Iscritto il: 01/04/13 20:27


Torna a Applicazioni Office Windows


Topic correlati a "Exel - Estrazioni random e creazione gruppi con condizioni":


Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti