Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[EXCEL] Permutazione

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

[EXCEL] Permutazione

Postdi Statix » 26/03/08 23:39

Ciao a tutti,
ho un problema,volendo fare la permutazione di 5 numeri
Codice: Seleziona tutto
A1 = 5
B1 = 5
C1=Permutazione(A1;B1)
mi da 120 combinazioni
a questo punto volevo chiedere con quale formula si possono visualizzare le 120 combinazioni?

grazie
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Sponsor
 

Re: [EXCEL] Permutazione

Postdi Anthony47 » 27/03/08 00:22

La cosa piu' semplice e' una macro:

Codice: Seleziona tutto
For I=1 to 5
For J=1 to 4
For K=1 to 3
For L=1 to 2
' istruzioni
' istruzioni
Next L
Next K
Next J
Next I

Poiche' non hai detto quali sono gli oggetti, quantificati in A1 e B1 ma non qualificati, non so suggerire quali "istruzioni" servono nel corpo della sudetta macro.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Permutazione

Postdi Statix » 27/03/08 09:20

Ciao Anthony47
la permutazione è di 5 numeri
1 -2 -3 -4 -5
con 5 numeri si ottengono 120 combinazioni,adesso io vorrei visualizzare queste combinazioni.
Codice: Seleziona tutto
esempio

1-2-3-4-5
1-2-3-5-4
2-3-4-5-1
3-4-2-5-1
5-4-3-2-1
4-2-3-1-5
e cosi via
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: [EXCEL] Permutazione

Postdi Anthony47 » 27/03/08 15:12

Questa mette le 120 combinazioni in colonna A:
Codice: Seleziona tutto
Sub permB()
For I = 1 To 5
For J = 1 To 5
For K = 1 To 5
For L = 1 To 5
For M = 1 To 5
FillC = " "
If J = I Or K = I Or K = J Or L = I Or L = J Or L = K Or M = I Or M = J Or M = K Or M = L Then GoTo skip:
Range("A65536").End(xlUp).Offset(1, 0) = I & FillC & J & FillC & K & FillC & L & FillC & M
skip:
Next M
Next L
Next K
Next J
Next I
End Sub


Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Permutazione

Postdi Statix » 27/03/08 15:33

Ciao Anthony47
ho provato la macro ed e tutto ok.
ti volevo chiedere se era possibile inserire in un foglio
5 celle dove inserire i 5 numeri e con la macro Permutazione,restituire le combinazioni in altrettante celle.

Codice: Seleziona tutto
esempio
A1= 1
B1=2
c1=3
d1=4
e1=5
e nel Range f1:J120 le combinazioni
scusami se ti chiedo troppo.
grazie
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: [EXCEL] Permutazione

Postdi Anthony47 » 28/03/08 00:21

Statix ha scritto:scusami se ti chiedo troppo

Il problema non e' "quanto" chiedi, ma il fatto che lo chiedi un pezzo alla volta, e ogni volta il lavoro fatto la volta precedente sarebbe meglio buttarlo via perche' ogni problema ha la "sua" soluzione....

La cosa piu' semplice e' che ti crei 5 variabili in cui metti i valori delle celle A1:E1 a seconda del valore degli indici I:M;
per essere piu' espliciti, dopo If J=1 etc etc:
Codice: Seleziona tutto
VI = Range("A1").Offset(0, I - 1).Value
VJ = Range("A1").Offset(0, J - 1).Value
VK = Range("A1").Offset(0, K - 1).Value
VL = Range("A1").Offset(0, L - 1).Value
VM = Range("A1").Offset(0, M - 1).Value

Poi nella formula del concatenamento sotituisci X con VX (es J con VJ).

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Permutazione

Postdi Statix » 28/03/08 12:13

Ciao Anthony47
perdonami la mia ignoranza,ma non ci riesco a modificare la macro.
per evitare di chiederti qualche altro pezzo,
la macro che hai scritto mi fa queste funzioni ?
esempio
Codice: Seleziona tutto
io metto 5 numeri a caso in un Range(A1:E1)
poi fa le permutazioni e le combinazioni me le visualizza in un altro range(I1:M120)
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: [EXCEL] Permutazione

Postdi Anthony47 » 28/03/08 15:04

Devi scrivere le 5 nuove istruzioni sulla riga dopo la riga con If.

Poi "nella formula del concatenamento sotituisci X con VX (es J con VJ)"; poiche' "&" e' il simbolo di "concatenamento", dove c' e' scritto "I &" scriverai "VI &", dove c' era scritto "J &" scriverai "VJ &" etc (mantieni lo spazio prima e dopo il simbolo &).

I risultati vengono scritti da A2 in basso; se ti servono in altre colonne, invece di scrivere Range("A65536") scriverai Range("La-tua-colonna65536"); oppure li porti dove vuoi con la formula =A2.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Permutazione

Postdi Statix » 28/03/08 18:42

Ciao Anthony47
sei un vero maestro,oggi dietro i tuoi consigli ho imparato un altra cosa.
è giusto cosi altrimenti con la pappa pronta non si impara
ecco qui la modifica della macro

Codice: Seleziona tutto
Sub Permutazione()

For I = 1 To 5
For J = 1 To 5
For K = 1 To 5
For L = 1 To 5
For M = 1 To 5
FillC = " "
If J = I Or K = I Or K = J Or L = I Or L = J Or L = K Or M = I Or M = J Or M = K Or M = L Then GoTo skip:
vI = Range("A1").Offset(0, I - 1).Value
vJ = Range("A1").Offset(0, J - 1).Value
vK = Range("A1").Offset(0, K - 1).Value
vL = Range("A1").Offset(0, L - 1).Value
vM = Range("A1").Offset(0, M - 1).Value
Range("A1000").End(xlUp).Offset(1, 0) = vI & FillC
Range("B1000").End(xlUp).Offset(1, 0) = vJ & FillC
Range("C1000").End(xlUp).Offset(1, 0) = vK & FillC
Range("D1000").End(xlUp).Offset(1, 0) = vL & FillC
Range("E1000").End(xlUp).Offset(1, 0) = vM & FillC
skip:
Next M
Next L
Next K
Next J
Next I



End Sub


grazie,alla prossima
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: [EXCEL] Permutazione

Postdi Anthony47 » 28/03/08 21:43

Bravo, pero' ti dovresti applicare di piu' :D

grazie,alla prossima

Oh no... :eeh:

Ciao.

PS: visto che metti ogni elemento in una cella diversa, puoi togliere quei "& FillC" che servivano da separatori.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Permutazione

Postdi Statix » 28/03/08 21:55

Ciao Anthony47,
ho pensato di allegarlo in modo che possa servire anche agli altri
http://www.freefilehosting.net/download/3ea4i
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: [EXCEL] Permutazione

Postdi Statix » 28/03/08 22:00

il primo allegato è per Excel 2007
questo per Excel 2003
http://www.freefilehosting.net/download/3ea4j
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: [EXCEL] Permutazione

Postdi Statix » 29/03/08 18:54

allego il file modificato con l'aggiunta della
permuta classe 3 e 4 in excel 2003
http://www.freefilehosting.net/download/3ebbk
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Permutazione":


Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti