Condividi:        

MACRO EXCEL COMBINAZIONE 3 VARIABILI IN 20 RIGHE

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

MACRO EXCEL COMBINAZIONE 3 VARIABILI IN 20 RIGHE

Postdi carpediem250 » 20/03/19 20:45

Ciao a tutti ho questo problema da dover risolvere:
devo scrivere una macro per ottenere una matrice di combinazioni di tre valori
VN(1) = a
VN(2) = b
VN(3) = c

che si combinano in modo da formare una colonna (o riga) di 20 valori totali, in cui "a" si ripete per 15 volte sempre, mentre i valori b o c variano da 0 a 5. per capirci:

a a a a a a a a a a a a a a a b b b b b
a a a a a a a a a a a a a a a b b b b c
a a a a a a a a a a a a a a a b b b c c
a a a a a a a a a a a a a a a b b c c c
a a a a a a a a a a a a a a a b c c c c
a a a a a a a a a a a a a a a c c c c c

devo dunque trovare una matrice di tutte le combinazioni possibili. per semplificare il calcolo posso anche effettuare il calcolo secondo le varie ipotesi:
1) tutte le combinazioni aventi "a" ripetuto 15 volte, "b" ripetuto 5 volte
2) tutte le combinazioni aventi "a" ripetuto 15 volte, "b" ripetuto 4 volte "c" ripetuto una volta
3) tutte le combinazioni aventi "a" ripetuto 15 volte, "b" ripetuto 3 volte "c" ripetuto 2 volte
...
6)tutte le combinazioni aventi "a" ripetuto 15 volte, "c" ripetuto 5 volte

le colonne non devono ripetersi, e non posso ridurlo prendendo valori random, ho bisogno dell'intera matrice delle combinazioni.
grazie a tutti
carpediem250
Newbie
 
Post: 7
Iscritto il: 20/03/19 20:14

Sponsor
 

Re: MACRO EXCEL COMBINAZIONE 3 VARIABILI IN 20 RIGHE

Postdi wallace&gromit » 21/03/19 08:51

Il tuo quesito si riduce a: elenco dei numeri di 5 cifre in base 2.
Infatti "a" ripetuto 15 volte è una costante.
"b" possiamo porlo equivalente a 0 e "c" a 1.
Abbiamo 31 combinazioni partendo da 00000 e arrivando a 11111.

Avendo capito male inizialmente il tuo quesito avevo preparato un calcolo di tutti i numeri in base 5, ma è stato facile adattarlo alla base 2. Non servono macro, bastano formule.

Lo puoi scaricare qui: http://www.filedropper.com/numeri5cifreinbaseascelta
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2180
Iscritto il: 16/01/12 14:21

Re: MACRO EXCEL COMBINAZIONE 3 VARIABILI IN 20 RIGHE

Postdi carpediem250 » 21/03/19 15:46

ciao grazie mille per la risposta così celere.
purtroppo mi son spiegato male ieri. Io ho bisogno di trovare tutte le combinazioni di una riga contenente 20 valori dove ogni il numero complessivo di valore a,b o c resta lo stesso in ogni riga:
cerco di essere più chiaro:
- 1a combinazione di 20 righe x n colonne di 2 variabili a , b (in cui "a" sono sempre 15 e "b" sono sempre 5):
1) a a a a a a a a a a a a a a a b b b b b
2) a b a b a b a a b a b a a a a a a a a a
2) b b a a a b b a a a b a a a a a a a a a
. . .
n) b b b b b a a a a a a a a a a a a a a a

- 2a combinazione di 20 righe x n colonne di 3 variabili a ,b, c (in cui in ogni riga il numero di "a" è sempre 15, il numero di "b" son 3, il numero di "c" son 2:
1) a a a a a a a a a a a a a a a b b b c c
2) a c a b a b a a b a c a a a a a a a a a
2) b b a a a b b a a a c a a a a a a a a a
. . .
n) c c b b b a a a a a a a a a a a a a a a
carpediem250
Newbie
 
Post: 7
Iscritto il: 20/03/19 20:14

Re: MACRO EXCEL COMBINAZIONE 3 VARIABILI IN 20 RIGHE

Postdi carpediem250 » 21/03/19 23:41

ragionando con fatica, posso dire con quasi certezza che quello di cui ho bisogno è costruire una permutazione con ripetizione.
cioè devo visualizzare tutti i possibili anagrammi di queste parole:

1) a a a a a a a a a a a a a a a b b b b b
2) a a a a a a a a a a a a a a a b b b b c
3) a a a a a a a a a a a a a a a b b b c c
carpediem250
Newbie
 
Post: 7
Iscritto il: 20/03/19 20:14

Re: MACRO EXCEL COMBINAZIONE 3 VARIABILI IN 20 RIGHE

Postdi carpediem250 » 22/03/19 00:17

l'altra difficoltà che ho è che ogni lettera deve occupare una singola cella
carpediem250
Newbie
 
Post: 7
Iscritto il: 20/03/19 20:14

Re: MACRO EXCEL COMBINAZIONE 3 VARIABILI IN 20 RIGHE

Postdi Anthony47 » 22/03/19 02:33

Mah, quando veniamo chiamati per contribuire a realizzare un pezzetto di un disegno piu' grande mi viene sempre il dubbio che il disegno complessivo sia effettivamente quello giusto...
Nel senso che quanto richiesto e' evidentemente uno step per risolvere un problema piu' grosso di cui ignoriamo la natura, quindi ignoriamo se la strada intrapresa sia effettivamente efficace e semplice.

Comunque, partiamo da quanto fatto per altro utente qui: viewtopic.php?f=26&t=110429&p=648252#p648252

Originariamente quel file e la macro associata al pulsante "CALCOLA Sviluppo" sviluppano "combinazioni semplici" di N elementi a gruppi di k; lo useremo per creare un elenco contenente le combinazioni di 20 elementi a gruppi di 5, e quello che otterremo sara' la posizione dei 5 elementi estranei nelle "parole" da 20 caratteri che vanno create.

Inseriamo ora da Q1 verso destra le 5 lettere che vogliamo inserire (quindi BBBBB, oppure BBBBC, oppure BBBCC, o quello che sara')

A questo punto con una macro aggiuntiva, la Sub CreaParole che ho inserito in Modulo2 e che richiamo in coda alla sub principale (Sub Anth su Modulo1), andremo a creare le parole finali che saranno inserite da colonna G in avanti

Il file contenente queste prestazioni e' reperibile qui:
https://www.dropbox.com/s/vcrbiv1j48dfr ... .xlsm?dl=0

Per usarlo: compilare le celle Q1:U1; premere il pulsante CALCOLA Sviluppo

Prova e fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 19479
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: MACRO EXCEL COMBINAZIONE 3 VARIABILI IN 20 RIGHE

Postdi carpediem250 » 22/03/19 11:48

grazie mille!!! ultimo problema è che mi genera 19 righe e non 20. quindi inizialmente ho solo 4 valori (cioè BBBB) e non 5. in fondo alla matrice invece ho 5 valori di b.
carpediem250
Newbie
 
Post: 7
Iscritto il: 20/03/19 20:14

Re: MACRO EXCEL COMBINAZIONE 3 VARIABILI IN 20 RIGHE

Postdi carpediem250 » 22/03/19 11:59

anzi c'è in realtà un'altra problematica, che credo non sarà risolvibile in quanto excel non ha sufficiente memoria.
se devo trovare una permutazione di due elementi in 20 righe di cui uno si ripete 15 volte e l'altro 5 ho effettivamente 15504 combinazioni possibili (come hai giustamente calcolato). Ma se devo aggiungere una terza variabile, questo numero purtroppo aumenta:
1) permutazione di 3 elementi in cui a=15, b=4, c=1 = 20! / 15! * 4! * 1! = 77520 combinazioni
2) permutazione di 3 elementi in cui a=15, b=3, c=2 = 20!/ 15! * 3! *2! = 155040 combinazioni
carpediem250
Newbie
 
Post: 7
Iscritto il: 20/03/19 20:14

Re: MACRO EXCEL COMBINAZIONE 3 VARIABILI IN 20 RIGHE

Postdi Anthony47 » 23/03/19 01:32

Per il discorso di 4 B e 19 colonne, in effetti all'interno della Sub CreaParole era rimasta una istruzione che faceva parte di un altro esperimento abortito e che cancellava in pratica la prima colonna; quindi devi eliminare la riga wArr(I, 1) = iString

Pero' il tuo discorso ha evidenziato un baco nel mio ragionamento; perche' e' vero che il meccanismo utilizzato puo' risolvere i casi delle 5 B (dopo la correzione appena detta); ma non e' applicabile al caso BBBBC e tantomeno a BBBCC.

Immaginado che questo calcolo non lo debba fare in continuazione, ti suggerisco un bypass per ottenere il risultato complessivo voluto, che prevede un calcolo parziale sul foglio Sviluppo, ma un successivo accodamento su Foglio2.
Il processo e' il seguente:
1) Intanto ho aggiunto in Modulo2 una "Sub Sh2Accoda, che preleva quanto calcolato su foglio Sviluppo e lo posiziona su Foglio2, accodandolo a quanto eventualmente gia' presente (si potrebbe anche procedere al calcolo direttamente in Foglio2, ma ho preferito aggiungere "uno strato" di elaborazione.

2) A inizio processo, si usa il pulsante Azzera per ripulire sia Foglio2 che Sviluppo

3 a) Nel caso del calcolo con BBBBB, il processo e' diretto: si inserisce BBBBB in Q3:U3 di Sviluppo, si preme CALCOLA Sviluppo, e il risultato viene preparato sia in foglio Sviluppo che Foglio2

3 b) Nel caso di BBBBC, dopo aver azzerato tramite il pulsante Azzera bisogna popolare Q3:U3 in sequenza con
Codice: Seleziona tutto
BBBBC
BBBCB
BBCBB
BCBBB
CBBBB

e a ogni sequenza avviare CALCOLA Sviluppo

3 c) Nel caso di BBBCC il processo e' simile al 3b ma le sequenza da inserire in Q3:E3 sono ancora di piu':
Codice: Seleziona tutto
BBBCC
BBCBC
BCBBC
CBBBC
BBCCB
BCBCB
CBBCB
BCCBB
CBCBB
CCBBB


Il risultato complessivo verra' assemblato in Foglio2

Il file scaricabile al link pubblicato ieri e' gia' aggiornato con le modifiche descritte

Quanto al numero di righe calcolate, mi sembra di capire che hai ancora Excel 2003 (chè altrimenti non si spiega la preoccupazione per 155mila righe); se e' cosi' (a parte la raccomandazione di migrare su qualcosa di meno obsoleto) il suggerimento e' che ogni 3 cicli vai su Foglio2 e inserisci 21 colonne vuote prima di quelle che trovi compilate, in modo da avere tanti blocchi di 20 colonne piu' una di separazione affiancate.

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

Re: MACRO EXCEL COMBINAZIONE 3 VARIABILI IN 20 RIGHE

Postdi carpediem250 » 25/03/19 10:49

Grazie infinitamente, perfetto.
carpediem250
Newbie
 
Post: 7
Iscritto il: 20/03/19 20:14


Torna a Applicazioni Office Windows


Topic correlati a "MACRO EXCEL COMBINAZIONE 3 VARIABILI IN 20 RIGHE":


Chi c’è in linea

Visitano il forum: Anthony47, Raffaele53, raimea e 10 ospiti