Risultati da 1 a 13 di 13

Discussione: modificare le intestazioni di colonna in riga



  1. #1
    L'avatar di vtedone
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    mantova
    Età
    29
    Messaggi
    9
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    0

    modificare le intestazioni di colonna in riga

    Ciao ragazzi, ho un problema con la formattazione di questa tabella:
    codice 44 46 48 50
    x577 0 2 3 2
    y421 1 2 2 0
    Ovviamente quella che voglio modificare è composta da più record e intestazioni(vedi allegato) ma vorrei un risultato del genere, dove ho il campo taglia e un altro con le rispettive quantità:
    codice taglia quantità
    x577 44 0
    x577 46 2
    x577 48 3
    x577 50 2
    y421 44 1
    y421 46 2
    y421 48 2
    y421 50 0
    Le righe dove la quantità sono 0 possono anche non essere presenti. Sapete aiutarmi?
    File Allegati File Allegati

  2. #2
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160
    Buona sera, vtedone;
    in attesa di una Risposta che utilizzi Formule, se la cosa può essere di Tuo interesse, potri provare con un Codice VBA.


    A disposizione.

    Buona serata.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  3. #3
    L'avatar di vtedone
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    mantova
    Età
    29
    Messaggi
    9
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    0
    Certamente, grazie mille

  4. #4
    L'avatar di Bolz1
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Padova
    Età
    41
    Messaggi
    117
    Versione Office
    '11 e 16 MAC
    Likes ricevuti
    7
    Likes dati
    1
    Ho provato un po', ma credo che senza VBA non sia possibile...ho provato un bel po' di modi e formule, ma a meno di non copiare a mano il numero di codice per ogni taglia (poi andare a prenderne le quantità è facile) non sono riuscito...e nemmeno ad escludere l'inserimento della taglia se c'è uno 0 nella cella corrispondente...curioso anch'io di capire se c'è un modo senza vba e senza troppe colonne di appoggio...
    "Se tu segui tua stella non puoi fallire a glorioso porto" (Dante, Inferno - XV)

  5. #5
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1126
    Ciao vtedone
    Trovo molto strano che da una tabella incrociata vuoi una tabella verticale, normalmente è esattamente al contrario comunque...

    Visto che hai la versione di excel 2013 ho fatto una formula con l'AGGREGA cosi da evitare di attivarla con delle combinazioni di tastiera speciali

    Io ho messo tutto nello stesso foglio,ma potresti usare anche un'altro foglio con degli adattamenti , infatti nella cella A63 copia ed incolla questa formula e trascila in fondo fino alla riga 2078

    =INDICE($F$2:$F$57;AGGREGA(15;6;(RIF.RIGA($F$2:$F$57)-RIF.RIGA($F$2)+1)/($G$2:$AP$57<>"");RIGHE($A$63:A63)))

    Nella cella B63 copia ed incolla questa formula e poi trascila fino in fondo

    =INDICE($G$1:$AP$1;;AGGREGA(15;6;(RIF.COLONNA($G$1:$AP$1)-RIF.COLONNA($G$1)+1)/(($G$2:$AP$57<>"")*($F$2:$F$57=A63));CONTA.SE($A$63:A63;A63)))


    Nella cella C63 Copia ed incolla questa formula e poi trascinala fino in fondo

    =MATR.SOMMA.PRODOTTO(($F$2:$F$57=A63)*($G$1:$AP$1=B63)*($G$2:$AP$57))

    Sicuramente ci sono altre soluzioni e sono sicuro che qualche guru può tirare fuori qualcosa dal cilindro magico!!

    Ciao a tutti e buona notte!

  6. I seguenti utenti hanno dato un "Like"


  7. #6
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1665
    Versione Office
    2010 PC
    Likes ricevuti
    892
    Likes dati
    184
    ciao
    di solito, in questi casi, uso SCARTO() o INDIRETTO(), ma giusto per rimanere su INDICE(), propongo un'alternativa alle prime due formule di Gerardo, (giusto per limitare l'usura della tastiera :167::167:)

    in A63:
    =INDICE($F$2:$F$57;1+INT((RIF.RIGA($A2)-2)/COLONNE($G$1:$AP$1)))

    in B63:
    =INDICE($G$1:$AP$1;1+RESTO((RIF.RIGA($A2)-2);COLONNE($G$1:$AP$1)))

    la terza la confermo.

    sapendo di preciso dove collocarla si può "rinforzare" meglio i Rif.riga().

    La cosa si complicherebbe se volessimo escludere gli zeri.
    "So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")

  8. #7
    L'avatar di Bolz1
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Padova
    Età
    41
    Messaggi
    117
    Versione Office
    '11 e 16 MAC
    Likes ricevuti
    7
    Likes dati
    1
    ...come sempre....solo stupore conosce... :93:

    ninai :18: ...alle 7.21 del mattino...vuol dire che ci avrai pensato 8 nano secondi :242: ...io in mezz'ora non ci sono uscito dal loop mentale :292:

    Perdonami admin ma stavolta la medaglia d'oro va al mitico ninai :264:

    Posso chiederti un favore? Dettagli il ragionamento (soprattutto la variabile "riga" della funzione indice)? Ci avevo provato con indice, confronta, matr.somma.prodotto, ecc ma non riuscivo ad uscire dalla domanda "come fai a dirgli di cambiare codice quanto finiscono le taglie?" e "come fai a fargli ripetere n. volte uno stesso prodotto e poi passare al successivo?"...
    "Se tu segui tua stella non puoi fallire a glorioso porto" (Dante, Inferno - XV)

  9. #8
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1665
    Versione Office
    2010 PC
    Likes ricevuti
    892
    Likes dati
    184
    Citazione Originariamente Scritto da Bolz1 Visualizza Messaggio
    ...
    Posso chiederti un favore? Dettagli il ragionamento (soprattutto la variabile "riga" della funzione indice)? ............ non riuscivo ad uscire dalla domanda "come fai a dirgli di cambiare codice quanto finiscono le taglie?" e "come fai a fargli ripetere n. volte uno stesso prodotto e poi passare al successivo?"...

    alla seconda domanda ci pensa la prima formula e precisamente:

    1+INT((RIF.RIGA($A2)-2)/COLONNE($G$1:$AP$1))
    che incrementa di 1 ogni 20 righe
    1+int((2-2)/20)=1
    1+int((3-2)/20)=1
    ecc.
    ecc.
    1+int(20/20)=2
    1+int(21/20)=2
    ecc
    ecc

    per la taglia, in modo simile, la seconda formula:

    1+RESTO((RIF.RIGA($A2)-2);COLONNE($G$1:$AP$1))

    1+resto(0;20)=1
    1+resto(1;20)=2
    1+resto(2;20)=3
    ecc.
    ecc.
    ecc
    1+resto(20;20)=1
    1+resto(21;20)=2
    ecc. ecc.


    1+resto(0;20)=1
    "So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")

  10. #9
    L'avatar di vtedone
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    mantova
    Età
    29
    Messaggi
    9
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    0
    Grazie per la disponibilità ragazzi, funziona :286:

  11. #10
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160
    Buona giornata a Tutti.

    Solo per mantenere l'impegno preso per una soluzione in VBA, premesso che, ho preferito riportare il risultato nel Foglio di lavoro dedicato:
    - Report

    allego il Codice:

    Codice: 
    Option Explicit
    
    Sub Trasponi()
    Application.ScreenUpdating = False
    Dim NRg As Long, NCl As Long, x As Long, RNRg As Long
    Dim Rng As Integer
    Const Str As Byte = 7
        
        Sheets("Report").Select
        
        With Worksheets("quantità per sku")
        NRg = .Range("B" & Rows.Count).End(xlUp).Row
            NCl = Range("A" & Rows.Count).End(xlUp).Row
                If NCl < 2 Then NRg = 2
                    Range(Cells(2, 1), Cells(NCl, 3)).ClearContents
                    
    ''                       Procedura
    '   Codici
        For x = 1 To NRg - 1
            RNRg = Range("A" & Rows.Count).End(xlUp).Row
            .Cells(x + 1, 1).Copy Range(Cells(RNRg + 1, 1), Cells(RNRg + 36, 1))
            Range(.Cells(x + 1, 7), .Cells(x + 1, 42)).Copy
            Cells(RNRg + 1, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
        Next x
    '   Taglie
        NCl = .Cells(1, Columns.Count).End(xlToLeft).Column - 1
        Range(.Cells(1, Str), .Cells(1, NCl)).Copy
        Cells(2, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
        Rng = Range("B" & Rows.Count).End(xlUp).Row
            For x = 1 To NRg - 2
                RNRg = Range("B" & Rows.Count).End(xlUp).Row
                Range(Cells(2, 2), Cells(Rng, 2)).Copy Cells(RNRg + 1, 2)
            Next x
    '   Elimina 00 (Zeri)
        NRg = Range("A" & Rows.Count).End(xlUp).Row
        Do While Cells(NRg, 3) <> ""
            If Cells(NRg, 3) = 0 Then Cells(NRg, 1).EntireRow.Delete
            NRg = NRg - 1
            If NRg < 2 Then End
        Loop
    Application.ScreenUpdating = True
        End With
            Application.CutCopyMode = False
    End Sub
    Premetto che, in questo caso, la Soluzione con Formule è da preferire in quanto più immediata; potrebbe essere interessante valutare l'opportunità eliminare i Valori uguali a 0 (Zero) utilizzando questa parte di Codice:

    Codice: 
    '   Elimina 00 (Zeri)
        NRg = Range("A" & Rows.Count).End(xlUp).Row
        Do While Cells(NRg, 3) <> ""
            If Cells(NRg, 3) = 0 Then Cells(NRg, 1).EntireRow.Delete
            NRg = NRg - 1
            If NRg < 2 Then End
        Loop
    Ovviamente, se la decisione è quella di avere i Risultati in un unico Foglio di lavoro, il Codice andrebbe adattato di conseguenza.


    Tanto è dovuto.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  12. #11
    L'avatar di Bolz1
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Padova
    Età
    41
    Messaggi
    117
    Versione Office
    '11 e 16 MAC
    Likes ricevuti
    7
    Likes dati
    1
    Grazie ninai!

    E grazie Giuseppe per la macro che mi studierò bene!!
    "Se tu segui tua stella non puoi fallire a glorioso porto" (Dante, Inferno - XV)

  13. #12
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1665
    Versione Office
    2010 PC
    Likes ricevuti
    892
    Likes dati
    184
    Ciao
    Visto che Giuseppe incalza :246:, facciamola completa anche con formule, per escludere le taglie a quantità zero.

    Siamo + o - a quelle di Gerardo:

    A63
    =INDICE($F$2:$F$57;AGGREGA(15;6;(RIF.RIGA($F$2:$F$57)-RIF.RIGA($F$2)+1)/($G$2:$AP$57>0);RIGHE($A$63:A63)))

    B63:
    =INDICE($G$1:$AP$1;;AGGREGA(15;6;(RIF.COLONNA($G$1:$AP$1)-RIF.COLONNA($G$1)+1)/(($G$2:$AP$57>0)*($F$2:$F$57=A63));CONTA.SE($A$63:A63;A63)))
    "So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")

  14. #13
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1126
    @ninai decisamente meglio mettere >0 anziché <>"" ottimo intuito
    Un saluto a tutti

    Inviato da WindowsPhone XL950

Discussioni Simili

  1. Risposte: 8
    Ultimo Messaggio: 10/03/17, 21:48
  2. aggiungere riga e non modificare la formula
    Di donatella nel forum Domande su Excel in generale
    Risposte: 13
    Ultimo Messaggio: 21/09/16, 18:56
  3. Estrarre le intestazioni di campo e di riga di una tabella incrociata
    Di Carme2014 nel forum Domande su Excel in generale
    Risposte: 3
    Ultimo Messaggio: 11/06/16, 17:36
  4. prodotto di una riga per una colonna
    Di Loretta nel forum Domande su Excel in generale
    Risposte: 9
    Ultimo Messaggio: 21/11/15, 21:33
  5. Evidenziamo Riga e Colonna.... CONTEMPORANEAMENTE
    Di zio_tom nel forum Domande su Excel VBA e MACRO
    Risposte: 21
    Ultimo Messaggio: 17/11/15, 11:41

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •