Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[VBA] SORTEGGIO EXCEL

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

[VBA] SORTEGGIO EXCEL

Postdi daimpa » 16/12/11 01:36

Salve,

questo è il mio primo post qui :)

Ho un software in excel, ma ho un piccolo GRANDE problema.

Ci sono delle squadre, queste squadre vengono sistemate nei gironi tramite un estrazione casuale, occupando un posto specifico.

Per esempio:

Girone A
-POSTO -SQUADRA
-1 -ABCD
-39 -CDC
-78 -FFG

Girone b
-POSTO -SQUADRA
-2 -GGCG
-40 -KKLM
-79 -UUUI

Nello stesso foglio dell'estrazione, ho quattro colonne, in due ci sono i nomi delle squadre e i posti che queste occuperanno nel girone, in altri due i numeri casuali che uso per ordinare questi due valori.

Ecco il codice:

Codice: Seleziona tutto
Range("D1").FormulaR1C1 = "=IF(RC[2]="" "","""",RAND()*RANDBETWEEN(1,250))"
    Range("E1").FormulaR1C1 = "=IF(RC[1]="" "","""",Prova!R[6]C[-3])"
    Range("F1").FormulaR1C1 = "=CONCATENATE(Prova!R[6]C[-2],"" "",Prova!R[6]C[-3])"
    Range("A1:F1").AutoFill Destination:=Range("A1:F259"), Type:=xlFillDefault
   
    Range("A1:F259").Copy
    Range("A1:F259").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
       
    Range("G1").FormulaR1C1 = "=IF(RC[-1]="" "","""",RAND()*RANDBETWEEN(1,250))"
    Range("G1").AutoFill Destination:=Range("G1:G259"), Type:=xlFillDefault
   
    Range("G1:G259").Copy
    Range("G1:G259").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   
    Range("F1:G320").Sort Key1:=Range("G1"), Order1:=xlAscending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
           
    Range("D1:D259").Copy
    Range("D1:D259").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   
    Range("D1:E320").Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom


Nella colonna B del foglio "prova" ci sono i numeri dei posti (1,39, 78 ecc.) che le squadre occupano nei gironi, nella C e nella D invece il nome della squadra e l'abbreviazione della squadra. Per esempio Manchester United + MAN UTD.

Veniamo ora al mio problema.. Quando eseguo l'estrazione, questa non è casuale. Ci sono degli accoppiamenti che si ripetono molto frequentemente, sembra che il tutto tenga conto delle iniziali del nome della squadra. Mi sapete spiegare come è possibile questo?

Scusatemi se ho scritto molto, spero ci sia qualcuno in grado di aiutarmi. Se qualcosa non vi è chiaro chiedete pure, grazie dell'attenzione!
daimpa
Newbie
 
Post: 7
Iscritto il: 16/12/11 01:25

Sponsor
 

Re: [VBA] SORTEGGIO EXCEL

Postdi daimpa » 16/12/11 17:33

Codice: Seleziona tutto
    Range("E1").FormulaR1C1 = "=IF(RC[1]="" "","""",prova!R[6]C[-3])"
    Range("F1").FormulaR1C1 = "=CONCATENATE(prova!R[6]C[-2],"" "",Iscrizioni!R[6]C[-3])"
    Range("E1:F1").AutoFill Destination:=Range("E1:F259"), Type:=xlFillDefault
   
    Range("E1:F259").Copy
    Range("E1:F259").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
       
    Range("G1").FormulaR1C1 = "=IF(RC[-1]="" "","""",RAND()*RANDBETWEEN(1,250))"
    Range("G1").AutoFill Destination:=Range("G1:G259"), Type:=xlFillDefault
   
    Range("G1:G259").Copy
    Range("G1:G259").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   
    Range("F1:G320").Sort Key1:=Range("G1"), Order1:=xlAscending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom


Questo codice è più semplice, ma il problema resta sempre lo stesso, ci sono accoppiamenti che si ripetono, come fa un casuale a non esser casuale? :cry:
daimpa
Newbie
 
Post: 7
Iscritto il: 16/12/11 01:25

Re: [VBA] SORTEGGIO EXCEL

Postdi Flash30005 » 17/12/11 10:20

Proprio perché è un'estrazione casuale può ripetersi qualsiasi numero o coppia
Dopo ogni estrazione dovresti "controllare", tramite macro, se quel /quei numeri siano già stati estratti e, in questo caso, ripetere l'estrazione.
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: [VBA] SORTEGGIO EXCEL

Postdi daimpa » 17/12/11 18:38

Flash30005 ha scritto:Proprio perché è un'estrazione casuale può ripetersi qualsiasi numero o coppia
Dopo ogni estrazione dovresti "controllare", tramite macro, se quel /quei numeri siano già stati estratti e, in questo caso, ripetere l'estrazione.
Ciao


Il problema è che degli accoppiamenti si ripetono con TROPPA frequenza. Prendendo tre squadre in sucessione, Liverpool, Manchester United e Manchester City, su 6 giorni, almeno 3 volte ogni 4 estrazioni ci sono due tra queste tre squadre che stanno insieme...
daimpa
Newbie
 
Post: 7
Iscritto il: 16/12/11 01:25

Re: [VBA] SORTEGGIO EXCEL

Postdi Anthony47 » 18/12/11 21:23

Senza il file di origine completo di dati e di istruzioni d' uso non sono in grado di dare contributi.

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


Torna a Applicazioni Office Windows


Topic correlati a "[VBA] SORTEGGIO EXCEL":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti