Marco ha chiesto in Matematica e scienzeMatematica · 9 anni fa

Excel come generare le combinazioni senza ripetizione?

Qualcuno sa come riempire un foglio excel con tutte le combinazioni senza ripetizione una volta inseriti in due celle n e k con k<n

Aggiornamento:

Simplicius la funzione combinazione(n,k) restituisce solo il numero delle combinazioni, volevo la visualizzazione delle combinazioni possibili ad esempio

5 elementi presi 3 alla volta deve visualizzare

1 2 3

1 2 4

1 2 5

....

3 4 5

1 risposta

Classificazione
  • 9 anni fa
    Migliore risposta

    Una funzione excel che fa quello che vorresti che io sappia non c'è ma questo non ci impedisce di risolvere il problema, semplicemente ce la scriviamo struttando l'ambiente VBA di escel. Per generare le combinazioni ho solo riadattata in VBA l'algoritmo per generare le combinazioni di n elementi presi r alla volta

    Function comb(k)

    col(k) = col(k - 1)

    While col(k) < n - r + k

    col(k) = col(k) + 1

    If k < r Then

    comb (k + 1) '// richiama ricorsivamente la funzione comb()

    Else

    '// stampa a video il vettore col()

    nr = nr + 1

    For i = 1 To r

    Cells(nr, i) = col(i)

    Next

    End If

    Wend

    End Function

    e viene richiamata quando premi il pulsante genera con

    Private Sub CommandButton1_Click()

    Foglio1.Range("a4:o20000").ClearContents

    nr = 3

    k = 1

    r = Cells(2, 2)

    n = Cells(1, 2)

    comb (k)

    End Sub

    Trovi una copia del foglio excel al link

    http://www.naxa.it/cri/ya/combinazioni.xls

    Dal foglio potrai vedere, entrando in modalità sviluppo, il codice completo che potrà essere certamente migliorato, così com'è non è a prova di idiota, nel senso che qualunque valora inserisci nelle celle b1 e b2 lo accetta, potrai aggiungere la validazione dei dati immessi e cerca di non usare valori che generano milioni di combinazioni poiché non ha dimensioni illimitate.

    Ciao.

    • Accedi per rispondere alle risposte
Altre domande? Fai una domanda e ottieni le risposte che cerchi.