Vedi la macro proposta da w&g, sopra.
Io invece riciclerei quanto suggerito all'utente carlo.footballer qui:
viewtopic.php?f=26&t=96371&p=613359#p613359Per rispondere alla domanda di escludere "tutte le permutazioni" (meglio descritta nel tuo esempio) va modificato il codice della Sub PopWk, come segue:
- Codice: Seleziona tutto
Sub PopWk(ByVal Dummy)
Dim myExc As Boolean
'
For i = 1 To UBound(wIndx, 1)
If i > 1 Then If WKArr(myCnt, i - 1) < VArr(1, wIndx(i)) Then myExc = True
WKArr(myCnt, i) = VArr(1, wIndx(i))
If myExc = True Then Exit For
Next i
If myExc = False Then myCnt = myCnt + 1
End Sub
Leggi comunque quanto gia' scritto nel messaggio che ti ho linkato prima.
La macro da eseguire e' la Sub reComb.
Gli elementi da combinare vanno scritti in Foglio1 B2:T2, la Classe desiderata va scritta in B3; le informazioni effettive vengono calcolate in C6:C8.
Le combinazioni vengono scritte in Foglio2-A1, ma la destinazione puo' essere modificata nel codice (vedi istruzioni marcate <<<).
Per funzionare correttamente i dati in B2:T2 devono essere "crescenti"; es:
-A B C D E ....
-a b c d e ...
-1 2 3 4 5 6 7 8 9 10 11 ...
-1 2 3 4 5 6 7 8 9 A B C D ...
-1 2 3 4 5 6 7 8 9 a b c d ...
NON sono crescenti lettere Maiuscole e minuscole intercalate e ..tutte le altre combinazioni che scoprirete da voi
La macro proposta all'utente carlo.footballer consentiva invece di inserire qualsiasi valore nell'elenco da combinare, tipo Mela Arancia Fragola Limone.
Nel caso di elenchi molto lunghi (oltre 500K righe) la macro richiedera' parecchi secondi per essere completata; e' presente una form che consente di conoscere lo stato di avanzamento del calcolo ed eventualmente interrompere il processo, ma il calcolo dell'orario di completamento e' impreciso (la precisione aumenta man mano che si procede), ma
Il mio file dimostrativo e' qui:
https://www.dropbox.com/s/dw8ros1rp9fm1 ... .xlsm?dl=0Rispetto alla macro di w&g, questa soluzione gestisce anche piu' di 9 elementi da combinare, e la classe e' impostabile sul foglio.
E' il mio ultimo messaggio del 2015, quindi Buon anno a tutti.