permutazione



  • permutazione
    di Traniwebdesign data: 27/11/2016 09:41:54

    ciao a tutti, ho spesso la necessita di creare delle permutazioni.
    con excel possi imposare una formula ma spesso quando ci sono dei valori mancanti crea la combinazione anche senza valori ( visto che creo il massimo numero idc ombinazioni possibili ).
    io ho 3 colonne con taglia,colore e stile NEL ( FOGLIO_MASTER ) un foglio, con tutte le misure ed i modelli a disposizione che modifico di settimana in settimana.
    Nell'altro foglio ( ADD_CON_VARIANTI ) ho una sorta di concatena che prende e concatena uno alla volta i valori.
    però aumentando le varianti ed i colori esce una cosa inimmaginabile, e con la formula non ci si riesce piu.
    Vorrei che si venisse a creare un elenco come quello fatto da me nel foglio ADD_CON_VARIANTI.
    Si puo fare sta consa con VB?Grazie a tutti voi in anticipo.
    ----------------------------------------------------------------------------
    come dovrebbe venire la lista permutata

    TAGLIA=XS|COLORE=BLU|STILE=STELLATO
    TAGLIA=XS|COLORE=BLU|STILE=RIGATO
    TAGLIA=XS|COLORE=BLU|STILE=CERCHIATO
    E COSI VIA...



  • di patel data: 27/11/2016 10:21:05

    prova questa
     
    Sub a()
    dr = 3
    With Sheets("FOGLIO_MASTER")
      For r = 2 To 7
        taglia = "TAGLIA=" & .Cells(r, "C") & "|"
        For r1 = 2 To 10
          colore = "COLORE=" & .Cells(r1, "D") & "|"
          For r2 = 2 To 4
            stile = "STILE=" & .Cells(r2, "E")
            Sheets("ADD_CON_VARIANTI").Cells(dr, "H") = taglia & colore & stile
            dr = dr + 1
          Next
        Next
      Next
    End With
    End Sub





  • permutazione
    di Traniwebdesign data: 27/11/2016 10:30:26

    madonna grazie mille....
    ssiete veramente una manna dal cielo....
    senti una cosa sola.
    invece che di mettere il ciclo for 2 a 7, esiste una specie di controllo, che verifica se le celle sono piene?
    cioe nel senso che quando avro 2 taglie e 5 colori mi genererà solo 10 viarianti.
    ORa ho fatto una prova e mi genera comunque e sempre i valori di default anche se il campo non è valorizzato.
    Esiste una controllo del genre ?
    Grazie mille.



  • di patel data: 27/11/2016 10:51:05

    prova ora
     
    Sub a()
    dr = 3
    With Sheets("FOGLIO_MASTER")
      LR = .Cells(.Rows.Count, "C").End(xlUp).Row
      For r = 2 To LR
        taglia = "TAGLIA=" & .Cells(r, "C") & "|"
        For r1 = 2 To 10
          colore = "COLORE=" & .Cells(r1, "D") & "|"
          For r2 = 2 To 4
            stile = "STILE=" & .Cells(r2, "E")
            Sheets("ADD_CON_VARIANTI").Cells(dr, "H") = taglia & colore & stile
            dr = dr + 1
          Next
        Next
      Next
    End With
    End Sub






  • di Traniwebdesign (utente non iscritto) data: 28/11/2016 05:52:41

    ciao, si ho provato ma genera ugualmente tutte le varianti...
    forse c'è necessita di un conteggio delle celle piene su tutte e 3 le colonne.guarda mettendo solo XS,S, blu e rigato........
    dovrebbe darmi solo 2 combinazioni......1 - xs blu rigato e 2 - S blu rigato......invece mi genera tutto questo.
    TAGLIA=XS|COLORE=BLU|STILE=rigato
    TAGLIA=XS|COLORE=BLU|STILE=
    TAGLIA=XS|COLORE=BLU|STILE=
    TAGLIA=XS|COLORE=|STILE=rigato
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=rigato
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=rigato
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=rigato
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=rigato
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=rigato
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=rigato
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=rigato
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=XS|COLORE=|STILE=
    TAGLIA=S|COLORE=BLU|STILE=rigato
    TAGLIA=S|COLORE=BLU|STILE=
    TAGLIA=S|COLORE=BLU|STILE=
    TAGLIA=S|COLORE=|STILE=rigato
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=rigato
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=rigato
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=rigato
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=rigato
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=rigato
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=rigato
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=rigato
    TAGLIA=S|COLORE=|STILE=
    TAGLIA=S|COLORE=|STILE=



  • di patel data: 28/11/2016 08:34:53

    prova ora
     
    Sub a()
    dr = 3
    With Sheets("FOGLIO_MASTER")
      LR = .Cells(.Rows.Count, "C").End(xlUp).Row
      For r = 2 To LR
        taglia = ""
        If .Cells(r, "C") <> "" Then taglia = "TAGLIA=" & .Cells(r, "C") & "|"
        For r1 = 2 To 10
          colore = ""
          If .Cells(r1, "D") <> "" Then colore = "COLORE=" & .Cells(r1, "D") & "|"
          For r2 = 2 To 4
            stile = ""
            If .Cells(r2, "E") <> "" Then stile = "STILE=" & .Cells(r2, "E")
            If taglia <> "" And colore <> "" And stile <> "" Then
              Sheets("ADD_CON_VARIANTI").Cells(dr, "H") = taglia & colore & stile
              dr = dr + 1
            End If
          Next
        Next
      Next
    End With
    End Sub
    






  • di Traniwebdesign (utente non iscritto) data: 28/11/2016 09:22:09

    cio e grazie. avevo gia modificato la query copiando altre 2 volte la tua modifica.
    Abbiamo risolto alla grandissima
    ma ora una cosa......
    se io volessi mettere tutto in una cella in orizzontale......
    cioè tutto l'ambaradan non lo volessi incolonnato ma lo vorrei piazzare di lungo in una cella ?concatenato cosi come viene in verticale ma in orizzontale ?
    esiste una specie di trasponi ?



  • di Traniwebdesign (utente non iscritto) data: 28/11/2016 09:37:49

    BUG..PRATICAMENTE eseguendo quella routine.
    ....con questi valori genera questo sotto( NON ho messo nessun valore in STILE), ma cmq sia genera ugualmente il testo STILE=
    --------------------------------------------------
    TAGLIA COLORE STILE
    XS BLU
    S VERDE
    ---------------------------------------------------------
    TAGLIA=XS|COLORE=BLU|STILE=
    TAGLIA=XS|COLORE=BLU|STILE=
    TAGLIA=XS|COLORE=VERDE|STILE=
    TAGLIA=XS|COLORE=VERDE|STILE=
    TAGLIA=S|COLORE=BLU|STILE=
    TAGLIA=S|COLORE=BLU|STILE=
    TAGLIA=S|COLORE=VERDE|STILE=
    TAGLIA=S|COLORE=VERDE|STILE=

     
    Sub a()
    dr = 3
    With Sheets("FOGLIO_MASTER")
      LR = .Cells(.Rows.Count, "C").End(xlUp).Row
      For r = 2 To LR
        taglia = ""
        If .Cells(r, "C") <> "" Then taglia = "TAGLIA=" & .Cells(r, "C") & "|"
        For r1 = 2 To 10
          colore = ""
          If .Cells(r1, "D") <> "" Then colore = "COLORE=" & .Cells(r1, "D") & "|"
          For r2 = 2 To 4
            stile = ""
            If .Cells(r2, "E") <> "" Then stile = "STILE=" & .Cells(r2, "E")
            If taglia <> "" And colore <> "" And stile <> "" Then
              Sheets("ADD_CON_VARIANTI").Cells(dr, "H") = taglia & colore & stile
              dr = dr + 1
            End If
          Next
        Next
      Next
    End With
    End Sub



  • di patel data: 28/11/2016 10:22:47

    a me non lo fa, non scrive niente





  • di Traniwebdesign (utente non iscritto) data: 28/11/2016 10:27:11

    e allora sara il mio pc che è rimbambito....ricreo un foglio nuovo. ti faccio saper.e



  • di patel data: 28/11/2016 11:46:17

    allega il file





  • di Traniwebdesign data: 28/11/2016 14:49:28

    ECCOLO
     
    ECCOLO



  • di patel data: 28/11/2016 17:35:10

    la sub Sub TAGLIACOLORESTILE() non scrive niente come ti avevo detto prima.
    L'altra l'hai modificata tu.
    Forse è il caso che tu alleghi un file con varie situazioni correlate al risultato desiderato





  • di Traniwebdesign data: 28/11/2016 17:41:51

    infatti...ora la elaboro e vediamo un po.



  • di Traniwebdesign data: 28/11/2016 18:15:06

    allora praticamente il codice in questione fa il suo bel lavoro.....
    Sub a()
    dr = 3
    With Sheets("FOGLIO_MASTER")
    LR = .Cells(.Rows.Count, "C").End(xlUp).Row
    For r = 2 To LR
    taglia = ""
    If .Cells(r, "C") <> "" Then taglia = "TAGLIA=" & .Cells(r, "C") & "|"
    For r1 = 2 To 10
    colore = ""
    If .Cells(r1, "D") <> "" Then colore = "COLORE=" & .Cells(r1, "D") & "|"
    For r2 = 2 To 4
    stile = ""
    If .Cells(r2, "E") <> "" Then stile = "STILE=" & .Cells(r2, "E")
    If taglia <> "" And colore <> "" And stile <> "" Then
    Sheets("ADD_CON_VARIANTI").Cells(dr, "H") = taglia & colore & stile
    dr = dr + 1
    End If
    Next
    Next
    Next
    End With
    End Sub
    ------------------------------------------------
    solo che quando nella 3 colonna che si chiama "STILE" non c'è nessun valore non dovrebbe generare nulla, invece genera comunque la scritta STILE=
    per intenderci le taglie ed i colori ci sono sempre...mentre lo stile è opzionale, quindi la rooutine quando lo trova lo gestisce, quando non trova le celle non dovrebbe proprio scriverlo nei risultati, e limitarsi a taglia e colore.
    Grazie mille.



  • di patel data: 28/11/2016 20:12:46

    quando si danno le informazioni un poco alla volta dalle mie parti si dice "pisciare a gocciole", prova questa.
     
     
    Sub TAGLIACOLORESTILE()
    dr = 3
    With Sheets("FOGLIO_MASTER")
      LR = .Cells(.Rows.Count, "C").End(xlUp).Row
      For r = 2 To LR
        taglia = ""
        If .Cells(r, "C") <> "" Then taglia = "TAGLIA=" & .Cells(r, "C") & "|"
        For r1 = 2 To 10
          colore = ""
          If .Cells(r1, "D") <> "" Then colore = "COLORE=" & .Cells(r1, "D") & "|"
          For r2 = 2 To 4
            stile = ""
            If .Cells(r2, "E") <> "" Then stile = "STILE=" & .Cells(r2, "E")
            If taglia <> "" And colore <> "" Then
              Sheets("ADD_CON_VARIANTI").Cells(dr, "H") = taglia & colore & stile
              dr = dr + 1
              If stile = "" Then Exit For
            End If
          Next
        Next
      Next
    End With
    End Sub






  • di Traniwebdesign data: 28/11/2016 20:56:59

    OTTIMO.....SEI UN GRANDE.