Condividi:        

sviluppo combinazioni condizionato

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 combinazioni condizionato

Postdi miko » 22/03/10 23:53

ciao, sono alle prese con un nuovo progetto, per me titanico, che cerco di illustrarvi.
è stato progettato per il win ma vorrei adattarlo anche al superenalotto.
nel foglio 1 ho inserito i numeri da 1 a 20, disposti in un quadrato come vedrete nel file che vi allego:
http://www.filedropper.com/sviluppocomb ... ndizionato
la disposizione non è importante qualora, ai fini del calcolo, crediate sia meglio disporli tutti su una riga o colonna.
per evitare di digitare i numeri da scegliere ogni volta ho pensato di inserire tutti i numeri, così la scelta potrebbe avvenire cliccando sulla cella corrispondente, attivandola e far comprendere alla macro che si è scelto quel numero.
sto cercando alcuni argomenti al riguardo, ma fino ad oggi non ho trovato nulla.
anche questa soluzione, se non è possibile realizzarla, non è poi così importante ai fini del calcolo che mi accingo a spiegarvi.
1) sviluppiamo tutte le combinazioni che si possono ottenere con i numeri scelti, anche scegliendoli tutti da 1 a 20, e le inseriamo nel foglio 2 a partire da B3.(vedi foglio 2)
a tal proposito ho modificato una macro realizzata da Anthony nel topic " FORMULA PER COMBINARE 90 NUMERI", ma mi sono fermato alle sestine, poichè il mio excel 03 non ha righe sufficienti per ospitare valori maggiori di 65536.
la macro dovrebbe prevedere quindi che se le combinazioni sviluppate superano il limite del foglio si deve passare al foglio successivo.
non credo che arriverò a sviluppare una tale quantità di combinazioni, ma vorrei prevenire una eventuale modifica della macro per questo problema.
2) ESECUZIONE DEL CALCOLO:
consideriamo:
1) tutte le combinazioni sviluppate,range B-K sotto (A), inserite nel foglio 2 e successivi se lo sviluppo supera il numero di righe del foglio ;
2) la prima combinazione del range P-Y, sotto (B), range P3-Y3;
3) i valori MIN e MAX che si trovano sulla stessa riga della prima combinazione del range P-Y, celle AA3 e AB3.
da tutte le combinazioni sotto (A) eliminiamo, momentaneamente, tutti i numeri diversi da quelli contenuti nella prima combinazione sotto (B).
dei restanti numeri sotto (A) calcoliamo le somme, riga per riga, e verifichiamo, per tutte le combinazioni sotto (A), se il risultato della somma è compreso od uguale ai valori MIN e MAX di AA3 e AB3.
se la somma è compresa tra il MIN e MAX, oppure è uguale ad uno dei due valori, accettiamo le combinazioni sotto (A), altrimenti le scartiamo.
memorizziamo le somme buone o meglio le righe in cui si trovano le somme relative a quelle combinazioni che verranno accettate;
ripristiniamo tutta la colonna (A) con i valori originari;
copiamo le combinazioni accettate sotto (A) nel foglio, diciamo il 20, i precedenti fogli possono servire per l'elaborazione.
ripetiamo lo stesso calcolo considerando tutte le combinazioni sotto (A);
la seconda combinazione sotto (B);
ed i corrispondenti valori MIN e MAX, posti nelle celle AA4 ed AB4.
le combinazioni accettate le accodiamo alle precedenti.
ripetiamo il calcolo fino all'ultima combinazione sotto (A).
i valori che ho inserito nel file sono totalmente casuali, non avendo eseguito alcun calcolo.
così pure le colonne possono essere diverse per necessità di calcolo.
il numero delle combinazioni sotto (A) dipende evidentemente dal numero di valori scelti nel foglio 1, e quindi dal numero di combinazioni sviluppate in ogni calcolo;
le combinazioni sotto (B) vengono prelevate da una altra cartella che ancora non ho completato, e col tempo aumentano, e si dovrebbe prevedere anche in questo caso la possibilità di passare al foglio successivo;
quindi vorrei inserire una call che preleva questi dati, (ho già la macro che effettua il trasferimento di valori).
anche questi ultimi valori variano ad ogni calcolo eseguito nella propria cartella, ma la variazione è limitata ai valori che inserisco ogni volta, rimanendo invariati i valori del calcolo precedente.
infine anche i valori nelle colonne AA ed AB, vengono prelevati da una altra cartella, ed anch'essi variano tutti ad ogni calcolo eseguito nella propria cartella.
quindi tutti i valori nelle colonne AA ed AB variano continuamente ad ogni calcolo.
anche per questi valori devo prevedere una call che li importa e la possibilità di passare al foglio successivo.
è evidente che non si conosce l'ultima riga piena o prima vuota, nei rispettivi range, per accodare i valori.
riassumendo, l'elaborazione deve:
1) sviluppare le combinazioni;
2) eliminare in tutto (A), non in modo definitivo, i valori diversi da una combinazione di (B);
3) eseguire le somme, per riga, sotto (A);
4) confrontare le somme con i valori in una cella di AA ed AB;
5) ripristinare (A);
6) copiare in un altro foglio le combinazioni sotto (A) che hanno rispettato la condizione di AA ed AB
7) ripetere il calcolo.
per quanto riguarda il flusso del calcolo non so se è meglio e più semplice sviluppare le combinazioni e successivamente eseguire i punti 2-3-4.., oppure eseguire i punti 2-3-4.. durante lo sviluppo delle combinazioni.
infine, e concludo, si potrebbe strutturare la macro in modo che il calcolo sia eseguito sia sviluppando le combinazioni, sia inserendo manualmente le combinazioni sotto (A) oppure importandole da un file txt.
la struttura che ho dato alla cartella, le righe, le colonne ed i valori nelle celle sono solo indicativi al solo scopo di illustrare l'elaborazione, e quindi per necessità di calcolo possono essere variate;
sarà la complessità della macro a stabilire la struttura della cartella.
credo di aver esposto tutto e spero con chiarezza.
mi rendo conto che sono l'autore dell' Odissea, ma chiarezza e sintesi, a volte, non sono buoni alleati.
saluti e grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 520
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: sviluppo combinazioni condizionato

Postdi miko » 31/03/10 23:24

salve,
dopo una decina di giorni di "studio" del vba sono riuscito a realizzare la macro dell'evento selection change, per questo progetto:
Codice: Seleziona tutto
Sub Worksheet_SelectionChange(ByVal Target As Range)
   Dim RNG As Range
  Set RNG = Intersect(Me.Range("N3:N12"), Target)    'range da adattare
  If RNG Is Nothing Then Exit Sub
  For Each CL In RNG
  If RNG.Interior.ColorIndex = xlNone Then
   With RNG.Interior
   .ColorIndex = 3
   .Pattern = xlSolid  '<<<<<<<
   .PatternColorIndex = xlAutomatic  '<<<<<<
   End With
   Else
   RNG.Interior.ColorIndex = xlNone
   End If
  Exit For 
  Next CL   
  End Sub

funziona, ma non so se tutte le linee sono necessarie, linee evidenziate.
di più, per il momento, non riesco a fare e sono fermo alla ricerca di argomenti utili per proseguire nella realizzazione del progetto.
alcuni argomenti che ho letto sono veramente ostici per me.
con questo ritmo ci mettterò una vita.
c'è qualcuno che può suggerirmi o aiutarmi nella prosecuzione del programma.
grazie
buona notte
windows 10 - office 2013
miko
Utente Senior
 
Post: 520
Iscritto il: 29/12/09 10:44

Re: sviluppo combinazioni condizionato

Postdi Flash30005 » 01/04/10 10:46

Il tuo file non è scaricabile

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: sviluppo combinazioni condizionato

Postdi miko » 01/04/10 11:16

salve,
ho inserito di nuovo il file qui:
http://rapidshare.com/files/370677082/S ... O.xls.html
ho provato a scaricarlo e funziona.
ciao grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 520
Iscritto il: 29/12/09 10:44

Re: sviluppo combinazioni condizionato

Postdi Flash30005 » 01/04/10 14:08

Procediamo per passi:
Ho iniziato a fare solo la selezione dei numeri in gioco
e invio il file
download
Poi una volta selezionati i numeri bisogna sviluppare tutte le combinazioni in gruppi da 10?

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: sviluppo combinazioni condizionato

Postdi miko » 01/04/10 23:47

salve,
ho visto il file, interessante anche la possibilità di visualizzare, nelle colonna N, la quantità di numeri selezionati.
si, hai intuito, qualunque sia la quantità di numeri selezionati nel range del foglio 1, e qualunque essi siano, bisogna sviluppare tutte le combinazioni in gruppi da 10.
devo dire però che avendo intenzione di applicare il programma anche al superenalotto
dovremmo prevedere, onde evitare di chiederti le modifiche da apportare al file, che il range del foglio 1 ospiterà i numeri da 1 a 90, ed il calcolo svilupperà tutte le combinazioni in gruppi da 6.
ovviamente non è mia intenzione sviluppare tutte le 622.milion ci combinazioni.
immagino che sarà una macro varamente complicata, e forse in fase di realizzazione della macro, se non ti è troppo disturbo, e dal momento che vai "a braccio", potresti indicare le linee da modificare e come,oppure aggiungere, commentata, la linea necessaria allo sviluppo del superenalotto, a meno che non si debba realizzare una macro completamente nuova appositamente per il superenalotto.
grazie saluti
windows 10 - office 2013
miko
Utente Senior
 
Post: 520
Iscritto il: 29/12/09 10:44

Re: sviluppo combinazioni condizionato

Postdi Flash30005 » 02/04/10 00:22

miko ha scritto:...devo dire però che avendo intenzione di applicare il programma anche al superenalotto
dovremmo prevedere, onde evitare di chiederti le modifiche da apportare al file, che il range del foglio 1 ospiterà i numeri da 1 a 90, ed il calcolo svilupperà tutte le combinazioni in gruppi da 6.
ovviamente non è mia intenzione sviluppare tutte le 622.milion ci combinazioni.
....

L'intenzione non c'è assolutamente nemmeno da parte mia, occorrerebbero circa 10.000 fogli con tutte le righe piene :eeh:
Per fare quello che dici ci vuole tempo, tempo e tempo
Feci qualche mese fa una macro che sviluppava tutte le colonne superenalotto in un file testo
il file occupa 11.795.629 Kb vuoi che te lo invii per posta? :lol:

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: sviluppo combinazioni condizionato

Postdi miko » 02/04/10 23:56

salve,
decisamente ho espresso male il concetto del post che hai evidenziato.
non è mia intenzione sviluppare, nel superenalotto, tutte le combinazioni possibili per poi eseguire il calcolo in questo progetto che ho proposto, e soprattutto non è mia intenzione chiederti un lavoro così immane, che richiederebbe non solo tempo ma anche un grande impegno mentale.
sarebbe oltretutto inutile uno sviluppo di tali dimensioni dal momento che il numero di combinazioni finali, superato un certo tetto di numeri scelti, sarebbe elevato e non gestibile in termini di giocata.
anche se non conosco i linguaggi di programmazione comprendo benissimo le difficoltà e l'impegno necessario per realizzare un progetto.
volevo solo chiedere se la macro che intendi realizzare si potesse impiegare sia per il winforlife che per il superenalotto.
in quest'ultimo caso sviluppando combinazioni, scegliendo tra 10, 11 , 12 ...numeri tra i 90, quindi con una quantità limitata di numeri scelti.
e poi se è possibile strutturare la macro in modo che le combinazioni, in gruppi di 10 o di 6, si possano inserire anche manualmente od importandole da un file di testo e poi eseguire il calcolo senza necessità di sviluppare le combinazioni.
mi farebbe piacere ricevere la
...macro che sviluppava tutte le colonne superenalotto in un file testo...

al solo scopo di studio e migliorare le mie conoscenze del vba;
anche perchè le tue realizzazioni sono "insolite" e "astute".
il file con lo sviluppo di tutte le combinazioni ritengo sia inutile richiederlo ed inviarlo
per i motivi precedentemente citati;
a meno che tra le combinazioni che hai sviluppato non hai individuato quella che con certezza uscirà nella prossima estrazione, allora si che ne farò richiesta. :) ;)
colgo l'occasione per augurare a tutti gli utenti del forum una felice PASQUA.
ciao grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 520
Iscritto il: 29/12/09 10:44

Re: sviluppo combinazioni condizionato

Postdi Flash30005 » 03/04/10 09:36

Se ti vuoi divertire ecco una macro che genera un file testo con lo sviluppo integrale di sestine (GrN) su 10 numeri (RangeN) sulla Root di C:\
Codice: Seleziona tutto
Sub CreaFileTxt()
RangeN = 10
GrN = 6
Open "C:\SviluppoI.txt" For Output As #1
For R1 = 1 To RangeN - (GrN - 1)
For R2 = R1 + 1 To RangeN - (GrN - 2)
For R3 = R2 + 1 To RangeN - (GrN - 3)
For R4 = R3 + 1 To RangeN - (GrN - 4)
For R5 = R4 + 1 To RangeN - (GrN - 5)
For R6 = R5 + 1 To RangeN - (GrN - 6)
AggR = R1 & "," & R2 & "," & R3 & "," & R4 & "," & R5 & "," & R6 & ","
    Print #1, AggR
Next R6
Next R5
Next R4
Next R3
Next R2
Next R1
    Close #1
End Sub
Sub ContaRigheTxt()
Y = 0
Open "C:\SviluppoI.txt" For Input As #1
Do Until EOF(1)
     Line Input #1, riga
     Y = Y + 1
     Uriga = riga
Loop
Close #1
MsgBox Y & " Col-" & Uriga
End Sub

La seconda macro conta quante righe sono state scritte nel file testo e fornisce l'ultima colonna come verifica,
utile se si sviluppa un file per il superenalotto non apribile (in visione) con nessun applicativo.

Per WinforLife dovrai inserire il valore 20 in RangeN
e 10 in GrN ma dovrai continuare la serie
Codice: Seleziona tutto
For R6 = R5 + 1 To RangeN - (GrN - 6)

Con
Codice: Seleziona tutto
For R7 = R6 + 1 To RangeN - (GrN - 7)
etc fino a R10

e aggiungere a
Codice: Seleziona tutto
AggR = ....."," & R6 & "," & R7 & "," & R8 & "," & R9 & "," & R10 & ","


In pratica una macro così
Codice: Seleziona tutto
Sub CreaSvilWFL()
RangeN = 20
GrN = 10
Open "C:\SviluppoI.txt" For Output As #1
For R1 = 1 To RangeN - (GrN - 1)
For R2 = R1 + 1 To RangeN - (GrN - 2)
For R3 = R2 + 1 To RangeN - (GrN - 3)
For R4 = R3 + 1 To RangeN - (GrN - 4)
For R5 = R4 + 1 To RangeN - (GrN - 5)
For R6 = R5 + 1 To RangeN - (GrN - 6)
For R7 = R6 + 1 To RangeN - (GrN - 7)
For R8 = R7 + 1 To RangeN - (GrN - 8)
For R9 = R8 + 1 To RangeN - (GrN - 9)
For R10 = R9 + 1 To RangeN - (GrN - 10)
    AggR = R1 & "," & R2 & "," & R3 & "," & R4 & "," & R5 & "," & R6 & "," & R7 & "," & R8 & "," & R9 & "," & R10 & ","
    Print #1, AggR
Next R10
Next R9
Next R8
Next R7
Next R6
Next R5
Next R4
Next R3
Next R2
Next R1
    Close #1
End Sub


Buona Pasqua
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: sviluppo combinazioni condizionato

Postdi miko » 08/04/10 21:44

salve,
grazie flash per le macro;
ho continuato le mie ricerche per trovare macro ho argomenti utili a questo progetto, ma l'unica cosa che ho ottenuto è una grande confusione che forse mi sta portando fuori dal seminato.
è proprio necessario il vostro aiuto.
ciao grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 520
Iscritto il: 29/12/09 10:44

Re: sviluppo combinazioni condizionato

Postdi DOMAR » 27/07/12 13:24

Ciao siccome la macro mi interesserebbe come potrei fare per inserire i numeri da estrarre, e non numeri a caso da 1 a 10 ???

Scusatemi per l'intromissione.

Ciao Grazie
DOMAR
Newbie
 
Post: 6
Iscritto il: 25/07/12 13:14

Re: sviluppo combinazioni condizionato

Postdi Flash30005 » 27/07/12 15:19

?
Cioè?
spiega meglio la tua esigenza
questo post risale a 2 anni fa e per rifare mente locale dovrei rileggermi tutto
pertanto è meglio sapere cosa vorresti (potrebbe essere anche un nuovo topic)

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: sviluppo combinazioni condizionato

Postdi DOMAR » 27/07/12 16:10

La macro incriminata è questa, vorrei fare in modo che non prenda dei numeri a caso ( da 1 a 20 ) ma li vorrei impostare io.

Grazie

Sub CreaFileTxt()
RangeN = 20
GrN = 6
Open "C:\SviluppoI.txt" For Output As #1
For R1 = 1 To RangeN - (GrN - 1)
For R2 = R1 + 1 To RangeN - (GrN - 2)
For R3 = R2 + 1 To RangeN - (GrN - 3)
For R4 = R3 + 1 To RangeN - (GrN - 4)
For R5 = R4 + 1 To RangeN - (GrN - 5)
For R6 = R5 + 1 To RangeN - (GrN - 6)
AggR = R1 & "," & R2 & "," & R3 & "," & R4 & "," & R5 & "," & R6 & ","
Print #1, AggR
Next R6
Next R5
Next R4
Next R3
Next R2
Next R1
Close #1
End Sub
Sub ContaRigheTxt()
Y = 0
Open "C:\SviluppoI.txt" For Input As #1
Do Until EOF(1)
Line Input #1, riga
Y = Y + 1
Uriga = riga
Loop
Close #1
MsgBox Y & " Col-" & Uriga
End Sub
DOMAR
Newbie
 
Post: 6
Iscritto il: 25/07/12 13:14

Re: sviluppo combinazioni condizionato

Postdi Flash30005 » 27/07/12 23:32

Beh, allora è sufficiente modificare una riga-codice (AggR...)
Codice: Seleziona tutto
Sub CreaFileTxt()
RangeN = 20
GrN = 6
Open "C:\SviluppoI.txt" For Output As #1
For R1 = 1 To RangeN - (GrN - 1)
For R2 = R1 + 1 To RangeN - (GrN - 2)
For R3 = R2 + 1 To RangeN - (GrN - 3)
For R4 = R3 + 1 To RangeN - (GrN - 4)
For R5 = R4 + 1 To RangeN - (GrN - 5)
For R6 = R5 + 1 To RangeN - (GrN - 6)
AggR = Range("A" & R1).Value & "," & Range("A" & R2).Value & "," & Range("A" & R3).Value & "," & Range("A" & R4).Value & "," & Range("A" & R5).Value & "," & Range("A" & R6).Value & ","
Print #1, AggR
Next R6
Next R5
Next R4
Next R3
Next R2
Next R1
Close #1
End Sub


Ricordati però che nella cella da A1 a A20 dovrai inserire i tuoi 20 numeri
(la seconda macro "ContaRighe" rimane invariata)

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: sviluppo combinazioni condizionato

Postdi DOMAR » 30/07/12 10:44

Grazie !!!!

Funziona alla grande.

Complimenti a tutti.......
DOMAR
Newbie
 
Post: 6
Iscritto il: 25/07/12 13:14


Torna a Applicazioni Office Windows


Topic correlati a "sviluppo combinazioni condizionato":


Chi c’è in linea

Visitano il forum: Nessuno e 42 ospiti