Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] - Combinazioni

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] - Combinazioni

Postdi oxygen84 » 07/09/11 12:20

Ciao a tutti.

Ho una tabella su excel di questo tipo:
Soggetto - Predicato - Complemento
Soggetto1 - Predicato1 - Complemento1
Soggetto2 - Predicato2 - Complemento2
...........

Avrei bisogno in una macro che mi genera, su un nuovo foglio, tutte le possibili combinazioni (senza doppioni)
formate dagli elementi della tabella: in ogni riga ci dovrebbe essere una concatenazione diversa delle 3 variabili.
N.B. non il numero di soggetti è diverso dal numero di predicati e dal numero di complementi.

Non ho idea di come si cominci. Ho provato a cercare qui sul forum ma ho trovato solo complicatissime macro per le combinazioni del superenalotto (e simili).
C'è qualche anima pia disposta a darmi una mano?

grazie
oxygen84
Newbie
 
Post: 4
Iscritto il: 05/09/11 15:44

Sponsor
 

Re: [Excel] - Combinazioni

Postdi Flash30005 » 07/09/11 13:54

Ho modificato il Titolo del Topic
[Excel] non era un buon riferimento per la ricerca del quesito

Purtroppo la soluzione al tuo quesito è proprio una macro che effettua tutte le combinazioni possibili tra i componenti del range come nei sistemi del Superenalotto o affini :D

Ho supposto che nel foglio 1 dalla riga 2 (dalla colonna A alla colonna C) ci siano i dati
e vorresti ottienenere tutte le combinazioni possibili nel foglio2

Questa macro dovrebbe essere risolutiva

Codice: Seleziona tutto
Sub Combinazioni()
Dim Ws1, Ws2 As Worksheet
Set Ws1 = Worksheets("Foglio1")
Set Ws2 = Worksheets("Foglio2")
UC = 3
UR = Ws1.Range("A" & Rows.Count).End(xlUp).Row
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row
Ws2.Range("A1:" & "C" & UR2).ClearContents
For RR1 = 2 To UR
    For RR2 = 2 To UR
        For RR3 = 2 To UR
            Sogg = Ws1.Cells(RR1, 1).Value
            Pred = Ws1.Cells(RR2, 2).Value
            Compl = Ws1.Cells(RR3, 3).Value
            Ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Sogg
            Ws2.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Value = Pred
            Ws2.Cells(Rows.Count, 3).End(xlUp).Offset(1, 0).Value = Compl
        Next RR3
    Next RR2
Next RR1
End Sub


Se hai problemi o osservazioni posta ancora

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] - Combinazioni

Postdi Anthony47 » 07/09/11 13:55

Mi pare che con le macro te la cavi, quindi ti do solo lo spunto:
Codice: Seleziona tutto
For I= 0 o 2
 For J= 0  2
  For K=0 to 2
   "Primo termine con offset I" & "Secondo termine con offset J" & "terzo termine con offset K"
  Next K
 Next J
Next I

E se non ti basta lo spunto posta ancora con le coordinate reale delle 3 colonne dati.

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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] - Combinazioni

Postdi oxygen84 » 07/09/11 17:40

grazie a entrambi.
Ho usato la macro completa di Flash perchè non conosco ancora molto le macro.
L'unico "problema" che ho rilevato è che dovevo necessariamente avere il numero di righe uguale per tutte le colonne,
altrimenti mi creava le combinazioni tenendo conto dell'ultima riga "interamente piena" (spero si capisca cosa voglio dire).
Ho comunque risolto riempiendo le celle vuote con dei caratteri di controllo e filtrando poi i risultati.
grazie ancora!
oxygen84
Newbie
 
Post: 4
Iscritto il: 05/09/11 15:44

Re: [Excel] - Combinazioni

Postdi Flash30005 » 07/09/11 20:33

oxygen84 ha scritto:L'unico "problema" che ho rilevato è che dovevo necessariamente avere il numero di righe uguale per tutte le colonne,
altrimenti mi creava le combinazioni tenendo conto dell'ultima riga "interamente piena" (spero si capisca cosa voglio dire).


:roll:
Non proprio

se hai delle celle vuote puoi inserire una IF di saltare o fare altro
non sapendo come hai, effettivamente, i dati non posso darti altri consigli

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] - Combinazioni

Postdi Anthony47 » 07/09/11 22:06

Non avevo proprio notato che Flash aveva postato una soluzione gia' fatta, altrimenti mi sarei autocancellato.

Per quanto riguarda la gestione degli elenchi ad altezza variabile, una possibile soluzione e' calcolare tre "URx", da usare usare per i singoli cicli For /Next, es For RR1=2 to UR1 (UR1 calcolato sulla colonna dei Sogg, UR2 dei Verbi, etc).

Ciao a tutti
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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] - Combinazioni":


Chi c’è in linea

Visitano il forum: raimea e 9 ospiti