Combinazioni di tre



  • Combinazioni di tre
    di Stefano (utente non iscritto) data: 14/03/2014 11:31:17

    Buongiorno a tutti. Nelle celle C4:L6 ho 30 numeri. Tramite vba è possibile ottenere tutte le combinazioni di quei 30 numeri in terzine? Da A12 B12 C12 a scendere, però deve essere un codice "elastico" nel senso che se non ci sono tutti e 30 numeri deve effettuare lo stesso l'operazione. Allego il file. Di vba ne capisco pochissimo. Grazie in anticipo



  • di lepat (utente non iscritto) data: 14/03/2014 11:53:32

    se disponi i numeri in colonna A a partire dalla riga 3 puoi usare questa macro
     
    Sub TreBis()
        dcol = 4:     drow = 3
        Inizio = 3
        i = 0
        While Cells(Inizio + i, 1) <> ""
          j = i + 1
            While Cells(Inizio + j, 1) <> ""
              K = j + 1
              While Cells(Inizio + K, 1) <> ""
                Cells(drow, dcol) = Cells(Inizio + i, 1)
                Cells(drow, dcol + 1) = Cells(Inizio + j, 1)
                Cells(drow, dcol + 2) = Cells(Inizio + K, 1)
                drow = drow + 1
                K = K + 1
              Wend
              j = j + 1
            Wend
          i = i + 1
        Wend
    End Sub



  • di Stefano (utente non iscritto) data: 14/03/2014 12:12:36

    Grazie del codice, l'ho provato ma non mi fa nulla, io ho allegato il file se vuoi prova.



  • di Stefano (utente non iscritto) data: 14/03/2014 14:41:07

    Scusami ma non avevo letto bene il tuo post, come dici tu funziona, ora però quel codice va adattato al mio file che però io personalmente non so fare......



  • di Vecchio Frac data: 14/03/2014 15:14:34

    Ma qual è il risultato atteso?
    1 - 2 - 3
    1 - 2 - 4
    1 - 2 - 5
    e così via?
    Ogni numero in una cella?
    Ogni terzina in una cella a partire da A12 in giù?
    Ogni terzina in una cella con i tre numeri separati da un carattere tipo trattino?






  • di Stefano (utente non iscritto) data: 14/03/2014 15:22:34

    Il primo numero nella cella cella A12 in secondo nella B12 il terzo nella C12 senza trattini e poi a scendere, la macro di lepat funziona bene, va adattata al mio file.



  • di lepat (utente non iscritto) data: 14/03/2014 19:03:23

    prova questa
     
    Sub Tre()
        Dim arr(30)
        dcol = 1:  drow = 11: n = 0
        Set Rng = Range("C4:L6")
        For Each cell In Rng
          If cell <> "" Then
            arr(n) = cell.Value
            n = n + 1
          End If
        Next
        n = n - 1
        For I = 0 To n
          For j = I + 1 To n
              For k = j + 1 To n
                Cells(drow, dcol) = arr(I)
                Cells(drow, dcol + 1) = arr(j)
                Cells(drow, dcol + 2) = arr(k)
                drow = drow + 1
              Next
          Next
        Next
    End Sub
    



  • di Stefano (utente non iscritto) data: 14/03/2014 19:18:24

    E' perfetta! Grazie tante