Condividi:        

sviluppo sistema integrale

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

sviluppo sistema integrale

Postdi raimea » 24/06/21 06:46

ciao
tramite macro vorrei realizzare lo sviluppo integrale
di 5 eventi ( partite) che possono avere 2 esiti ( risultati)

il numero di eventi e' riportato in D6
gli esiti previsti sono in D9
il tipo di esito da scrivere nella tabella in D12_13


nel caso del file allegato ho 5 eventi
con 2 possibili esiti V_P

con 2 esiti e 5 eventi avro 32 combinazioni totali

vorrei compilare la tabella da H6
scrivendo tutte le combinazioni usando le sigle
riportate in D12_13


PS
pensavo di trovare gia un post a riguardo
ma non l ho trovato.

allego il file

https://www.dropbox.com/s/4hoieturwki3qab/Sistema.rar?dl=0

grazie
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1431
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: sviluppo sistema integrale

Postdi Anthony47 » 24/06/21 12:53

Non so cosa ti aspetti, prova con questa macro:
Codice: Seleziona tutto
Sub svilluppo5x2()
oarr = Array("V", "P")
Range("H6").Resize(10, 50).ClearContents
For i = 0 To 1
    For j = 0 To 1
        For k = 0 To 1
            For l = 0 To 1
                For m = 0 To 1
                    Cells(6, 1000).End(xlToLeft).Offset(0, 1) = oarr(i)
                    Cells(7, 1000).End(xlToLeft).Offset(0, 1) = oarr(j)
                    Cells(8, 1000).End(xlToLeft).Offset(0, 1) = oarr(k)
                    Cells(9, 1000).End(xlToLeft).Offset(0, 1) = oarr(l)
                    Cells(10, 1000).End(xlToLeft).Offset(0, 1) = oarr(m)
                Next m
            Next l
        Next k
    Next j
Next i
End Sub

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19439
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: sviluppo sistema integrale

Postdi raimea » 24/06/21 13:31

ciao
si la macro sviluppa correttamente il caso del 5 Per 2
scrivendo V_P

ma in realta' chiedevo una cosa piu flessbile
cioe' sviluppare in relazione a cio che c'e scritto un D6=eventi

e in D9=numero di esiti previsti

riportando in tabella le scritte in D12 a seguire

questo mi permetterebbe di avere lo sviluppo completo
su piu casistiche ad Es: 1_X_2_Pari_Dispari_Vinto_Perso_1T ecc..

ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1431
Iscritto il: 11/02/10 07:33
Località: lago

Re: sviluppo sistema integrale

Postdi Anthony47 » 24/06/21 21:31

ma in realta' chiedevo una cosa piu flessbile
cioe' sviluppare in relazione a cio che c'e scritto un D6=eventi etc etc


Allora la cosa si fa piu' complessa...
Prova con questo codice, da inserire in un Modulo standard VUOTO:
Codice: Seleziona tutto
Dim TotEl As Long, ValArr(), oArr(), flEnd As Boolean

Sub SviluppoFlex()
'
TotEl = Range("D6").Value           '<<< Quanti Eventi
nstati = Range("D9").Value          '<<< Quanti possibili esiti
vstati = "D12"                      '<<< L'oriogine degli Esiti
'
flEnd = False
ReDim ValArr(0 To nstati - 1)
For i = 0 To nstati - 1
    ValArr(i) = Range(vstati).Offset(i, 0).Value
Next i
ReDim oArr(1 To TotEl, 1 To 1)
For i = 1 To TotEl
    oArr(i, 1) = ValArr(0)
Next i
Range(Range("H6"), Range("H6").End(xlDown).End(xlToRight)).ClearContents
Call RecurStat(1)

Range("H6").Resize(TotEl, UBound(oArr, 2) - 10).Value = oArr
MsgBox ("Completato...")
End Sub


Sub RecurStat(ProcEl As Long)
Dim cUB2 As Long, mMatch, nInd As Long
'
Do
    If ProcEl = 1 Then
        ReDim Preserve oArr(1 To UBound(oArr), 1 To UBound(oArr, 2) + 1)
        If UBound(oArr, 2) > (Columns.Count - 10) Then
            MsgBox ("Termine per supero Numero colonne")
            Exit Sub
        End If
    End If
    cUB = UBound(oArr, 2)
    mMatch = Application.Match(oArr(ProcEl, cUB - 1), ValArr, False)
    nInd = (mMatch) Mod (UBound(ValArr) + 1)
    DoEvents
    oArr(ProcEl, cUB) = ValArr(nInd)
    For i = ProcEl + 1 To TotEl
        oArr(i, cUB) = oArr(i, cUB - 1)
    Next i
''    Range("H6").Resize(TotEl, UBound(oArr, 2)).Value = oArr    'Debug
    If nInd > 0 Then
        If ProcEl = 1 Then
'''            RecurStat (ProcEl)
        Else
            Exit Sub
        End If
    Else
        If ProcEl < TotEl Then
            Call RecurStat(ProcEl + 1)
        Else
            flEnd = True
            Exit Sub
        End If
    End If
    If flEnd Or (ProcEl > 1) Then Exit Sub
Loop
End Sub


La sub da eseguire e' la SviluppoFlex.
I parametri vanno scritti in D6, D9, e D12 e sottostanti; eventualmente modificare le istruzioni marcate <<< in testa

Ricorda che Excel ha 16mila colonne; sviluppi che richiedessero piu' colonne verranno troncati

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19439
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: sviluppo sistema integrale

Postdi raimea » 24/06/21 21:48

ciao
quasi ok

se scrivo eventi 4 esiti 2
lo sviluppo tot e' 16 ma in realta ne sviluppa solo 7

cosi come per 5 X 2 totali 32 ne sviluppa solo 23

ecc.

PS
in d6 mettero' una convalida dati che arrivera al max 10

ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1431
Iscritto il: 11/02/10 07:33
Località: lago

Re: sviluppo sistema integrale

Postdi Anthony47 » 24/06/21 22:00

Azz...
No, il calcolo e' giusto ma e' riportato male; nell'istruzione Range("H6").Resize(TotEl, UBound(oArr, 2) - 10).Value = oArr quel -10 deve essere -1

10 eventi con 3 esiti fanno 59mila combinazioni...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19439
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: sviluppo sistema integrale

Postdi raimea » 24/06/21 22:10

ora tutto ok

si ricordo che ho max 16.000 colonne

trovero modo per gestire la situazione , mettendo un avviso

grazie
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1431
Iscritto il: 11/02/10 07:33
Località: lago


Torna a Applicazioni Office Windows


Topic correlati a "sviluppo sistema integrale":


Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti