Condividi:        

permutazioni

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

permutazioni

Postdi miko » 22/02/13 20:04

ciao,
sto cercando di realizzare una macro che sviluppi il seguente risultato:
dati n numeri disposti su una riga ed in celle distinte, ad esempio
1 2 3 4 ....
(quindi non conosco l'ultima cella-colonna piena)
si devono ottenere in celle distinte le possibili combinazioni del tipo
12 13 14
23 24 34
ed i loro inversi
21 31 41
32 42 43
con il ciclo che ho creato riesco ad ottenere solo la prima riga di numeri,
e solo se impongo l'esatta quantità di numeri iniziali.
saluti grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: permutazioni

Postdi Anthony47 » 23/02/13 02:16

Premesso che si tratta di "Combinazione" di N elementi a gruppi di K e non di "Permutazione" di N elementi.
Il file allegato realizza il calcolo potendo impostare si il numero N di elementi che il livello di raggruppamento K:
https://www.dropbox.com/s/xylzldkj517su ... .xlsm?dl=0

Non presenta anche l' inverso, che immagino possa essere prodotto facilmente una volta disponibile "il dritto".
Il file consente anche l' elaborazione di combinazioni "ridotte".

Spero sia di qualche utilita'.
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: permutazioni

Postdi miko » 09/03/13 12:21

salve,
utile precisazione
...si tratta di "Combinazione" di N elementi a gruppi di K e non di "Permutazione"...

il file che mi hai indicato contiene delle macro che per alcune linee
mi risultano di difficile interpretazione al momento.
mi sono ricordato che tempo addietro ho visto credo una tua macro, non ricordo il topic nè
l'argomento, che faceva uso di un ciclo while...wend;
così mi sono studiato un pò tale ciclo ed ho risolto il problema in questo semplice modo:
per ottenere gli accoppiamenti del tipo 12, 13, 14, ...ho usato questa macro:
Codice: Seleziona tutto
Sub Ambi()
RngIni = Range("A" & Rows.Count).End(xlUp).Row
If RngIni = 1 Then
RngIni = RngIni + 1
End If
Range("A3:E" & RngIni).ClearContents
 y = 1 'colonna
 x = 3 'riga
 i = 1 'colonna
       
 While Cells(1, i) <> ""
  j = i + 1
   While Cells(1, j) <> ""
   Cells(x, y) = (Cells(1, i)) & (Cells(1, j))
   Cells(x, y).Interior.ColorIndex = 3 'ROSSO
     y = y + 1
 If y = 6 Then
 x = x + 1
 y = 1
 End If
     j = j + 1
        Wend
     i = i + 1
    Wend
Application.ScreenUpdating = True
End Sub


per ottenere gli accoppiamenti del tipo 21, 31, 41,...
ho semplicemente invertito gli indici, per cui ne viene fuori questa macro:
Codice: Seleziona tutto
Sub AmbiINV()
Application.ScreenUpdating = False
UR = Range("A" & Rows.Count).End(xlUp).Row
 
 Range("A3:E" & UR).ClearContents
 y = 1 'colonna
 i = 1 'colonna
       
 While Cells(1, i) <> ""
  j = i + 1
   While Cells(1, j) <> ""
   Cells(UR + 1, y) = (Cells(1, j)) & (Cells(1, i))
   Cells(UR + 1, y).Interior.ColorIndex = 4 'VERDE
     y = y + 1
 If y = 6 Then
 UR = UR + 1
 y = 1
 End If
          j = j + 1
       Wend
     i = i + 1
    Wend
 
Application.ScreenUpdating = True
End Sub

non saranno il massimo in termini di struttura e velocità,
per un numero elevato di combinazioni, ma funziona.
grazie e saluti
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44


Torna a Applicazioni Office Windows


Topic correlati a "permutazioni":


Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti