È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

[RISOLTA] Permutazioni in Colonne Distinte

  • Messaggi
  • ONLINE
    L2018
    Post: 1.337
    Registrato il: 02/04/2018
    Città: PESCARA
    Età: 75
    Utente Veteran
    EXCEL 2016 - SPREAD32
    00 10/04/2024 14:12
    Ciao a tutti
    ho una macro molto semplice che sviluppa le Permutazioni di 6 numeri con un algoritmo elementare.
    Ma l'elenco si svolge su un'unica colonna e inizia dal rigo 2.
    Io sono molto scarso in VBA.
    Qualcuno puo' gentilmente fare in modo che
    - l'elenco cominci dal rigo 1
    - l'elenco si svolga in 6 colonne distinte ?
    grazie

    PERMU
    Sub permB()
    Dim i As Long, j As Long, k As Long, l As Long, m As Long, n As Long
    For i = 1 To 6: For j = 1 To 6: For k = 1 To 6
    For l = 1 To 6: For m = 1 To 6: For n = 1 To 6
    '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 Or n = m Or n = l Or n = k Or n = j Or n = i) Then GoTo skip
    'Range("A65536").End(xlUp).Offset(1, 0) = i & FillC & j & FillC & k & FillC & l & FillC & m & FillC & n
    Range("A65536").End(xlUp).Offset(1, 0) = i & j & k & l & m & n
    skip:
    Next: Next: Next: Next: Next: Next
    End Sub
    
    [Modificato da L2018 10/04/2024 15:04]

    LEO
    https://t.me/LordBrum
  • ONLINE
    Marius44
    Post: 1.243
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Veteran
    Excel2019
    00 10/04/2024 16:30
    Ciao Leo
    Prova così
    Option Explicit
    
    Sub permB()
    Dim i As Long, j As Long, k As Long, l As Long, m As Long, n As Long, a As Long, b As Long
    For i = 1 To 6
      b = i: a = 0
      For j = 1 To 6
        For k = 1 To 6
          For l = 1 To 6
            For m = 1 To 6
              For n = 1 To 6
                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 Or n = m Or n = l Or n = k Or n = j Or n = i) Then GoTo skip
                a = a + 1
                Cells(a, b) = i & j & k & l & m & n
    skip:
              Next
            Next
          Next
        Next
      Next
    Next
    End Sub
    

    Ciao,
    Mario
  • ONLINE
    L2018
    Post: 1.337
    Registrato il: 02/04/2018
    Città: PESCARA
    Età: 75
    Utente Veteran
    EXCEL 2016 - SPREAD32
    00 10/04/2024 18:57
    ciao Mario
    ti ringrazio, ma a dire il vero per colonne distinte intendevo dire che i 6 numeri di ogni permutazione devono essere in celle separate
    mi sa che non mi sono spiegato come dovevo, se non è complicato...grazie
    [Modificato da L2018 10/04/2024 19:01]

    LEO
    https://t.me/LordBrum
  • ONLINE
    Marius44
    Post: 1.244
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Veteran
    Excel2019
    00 10/04/2024 19:08
    Ciao
    Nella macro precedente elimina

    b = i: a = 0

    e sostituisci a questa riga

    Cells(a, b) = i & j & k & l & m & n

    queste altre

    Cells(a, 1) = i
    Cells(a, 2) = j
    Cells(a, 3) = k
    Cells(a, 4) = l
    Cells(a, 5) = m
    Cells(a, 6) = n


    Ciao,
    Mario
  • ONLINE
    L2018
    Post: 1.338
    Registrato il: 02/04/2018
    Città: PESCARA
    Età: 75
    Utente Veteran
    EXCEL 2016 - SPREAD32
    00 10/04/2024 19:10
    grazie, scusa per l'equivoco, vado a provare, mi ci vuole qualche minuto

    LEO
    https://t.me/LordBrum
  • ONLINE
    L2018
    Post: 1.342
    Registrato il: 02/04/2018
    Città: PESCARA
    Età: 75
    Utente Veteran
    EXCEL 2016 - SPREAD32
    00 10/04/2024 22:11
    grazie Mario

    avevo pensato ad una cosa simile, ma non l'avevo neppure provata pensando che ritardasse un po' troppo, invece...va benissimo

    LEO
    https://t.me/LordBrum