Creare tabella combinazioni

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
dragonblu17
Messaggi: 13
Iscritto il: domenica 16 marzo 2014, 4:32

Creare tabella combinazioni

Messaggio da dragonblu17 »

Salve a tutti, ho una domanda un po particolare da fare. Io in pratica, ad esempio, ho 3 numeri e vorrei sapere se c'è qualche sistema che mi dia tutte le possibili combinazioni di questi 3 numeri.

Provo a fare un empio pratico per potermi spiegare meglio:

Diciamo che in 3 diverse celle scrivo
1
2
3

Esiste un calcolo che mi dia le combinazioni di questi numeri che dovrebbero essere:
12
13
123
132
21
23
213
231
31
32
312
321

Grazie a tutti.
Buona giornata.
OpenOffice 4.0.1 su Windows 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Creare tabella combinazioni

Messaggio da patel »

Avrai sempre 3 numeri ? qual'è la situazione reale ?
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
dragonblu17
Messaggi: 13
Iscritto il: domenica 16 marzo 2014, 4:32

Re: Creare tabella combinazioni

Messaggio da dragonblu17 »

Io in pratica di numeri ne ho diversi, ma ho fatto l'esempio solo con quei 3 numeri per un semplice motivo pratico per poter far capire il risultato che mi serviva alla fine.
Spero di essere stato più chiaro e spero in un vostro aiuto.

Grazie.
OpenOffice 4.0.1 su Windows 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Creare tabella combinazioni

Messaggio da patel »

dispongo di una soluzione in vba e non è facile convertirla in starbasic, se puoi provala su excel, i dati devono stare in colonna A a partire da A3

Codice: Seleziona tutto

Dim rng As Range
Dim Buffer() As String
Dim BufferPtr As Long
Dim RowNum As Long, ColNum As Long

Sub ListPermutations()
    Dim PopSize As Integer
    Dim SetSize As Integer
    Dim Which As String
    Dim N As Double
    Const BufferSize As Long = 1000
    RowNum = 3
    ColNum = 3
    Set rng = Range(Range("A3"), Cells(Rows.Count, "A").End(xlUp))
    PopSize = rng.Cells.Count
    For SetSize = 2 To PopSize
      ReDim Buffer(1 To BufferSize) As String
      BufferPtr = 0
      AddPermutation PopSize, SetSize
      vAllItems = 0
    Next
 
End Sub
 
Private Sub AddPermutation(Optional PopSize As Integer = 0, _
    Optional SetSize As Integer = 0, _
    Optional NextMember As Integer = 0)
     
    Static iPopSize As Integer
    Static iSetSize As Integer
    Static SetMembers() As Integer
    Static Used() As Integer
    Dim i As Integer
     
    If PopSize <> 0 Then
        iPopSize = PopSize
        iSetSize = SetSize
        ReDim SetMembers(1 To iSetSize) As Integer
        ReDim Used(1 To iPopSize) As Integer
        NextMember = 1
    End If
     
    For i = 1 To iPopSize
        If Used(i) = 0 Then
            SetMembers(NextMember) = i
            If NextMember <> iSetSize Then
                Used(i) = True
                AddPermutation , , NextMember + 1
                Used(i) = False
            Else
                SavePermutation SetMembers()
            End If
        End If
    Next i
     
    If NextMember = 1 Then
        SavePermutation SetMembers(), True
        Erase SetMembers
        Erase Used
    End If
     
End Sub 
 
Private Sub SavePermutation(ItemsChosen() As Integer, _
    Optional FlushBuffer As Boolean = False)
    Dim i As Integer, sValue As String
    If FlushBuffer = True Or BufferPtr = UBound(Buffer()) Then
        If BufferPtr > 0 Then
            If (RowNum + BufferPtr - 1) > Rows.Count Then
                RowNum = 1
                ColNum = ColNum + 1
                If ColNum > 256 Then Exit Sub
            End If
            Cells(RowNum, ColNum).Resize(BufferPtr, 1).Value _
            = Application.WorksheetFunction.Transpose(Buffer())
            RowNum = RowNum + BufferPtr
        End If
        BufferPtr = 0
        If FlushBuffer = True Then
            Erase Buffer
            Exit Sub
        Else
            ReDim Buffer(1 To UBound(Buffer))
        End If
    End If
     'construct the next set
    For i = 1 To UBound(ItemsChosen)
        sValue = sValue & ", " & rng(ItemsChosen(i), 1)
    Next i
     
     'and save it in the buffer
    BufferPtr = BufferPtr + 1
    Buffer(BufferPtr) = Mid$(sValue, 3)
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
dragonblu17
Messaggi: 13
Iscritto il: domenica 16 marzo 2014, 4:32

Re: Creare tabella combinazioni

Messaggio da dragonblu17 »

Salve, ringrazio per la risposta ma voglio chiarire che non sono proprio un esperto informatico e non ho capito molto (per non dire niente) di quello che mi è stato scritto.
Chiedo pertanto una cortesia, se gentilmente mi potreste allegare un file già impostato dove io debba solo inserire i numeri.
Grazie ancora.
OpenOffice 4.0.1 su Windows 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Creare tabella combinazioni

Messaggio da patel »

la soluzione sopra riportata funziona tramite macro soltanto su excel, ne ho trovata un'altra che ti dovrebbe andare bene, vedi allegato.
Anche questa contiene una macro, quindi devi abilitare le macro
Allegati
permutazioni.ods
(11.95 KiB) Scaricato 1140 volte
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
dragonblu17
Messaggi: 13
Iscritto il: domenica 16 marzo 2014, 4:32

Re: Creare tabella combinazioni

Messaggio da dragonblu17 »

Ringrazio per la celere risposta, ho scaricato l'allegato e attivato le macro ma non riesco a farlo funzionare. Poteri avere una spiegazione più dettagliata su come fare??

Grazie mille per l'interessamento.
OpenOffice 4.0.1 su Windows 7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Creare tabella combinazioni

Messaggio da patel »

-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Rispondi