Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

XL Traslare dati da orizzontale a verticale (solo in parte)

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Angroz » 23/03/10 21:46

Ciao, mi potete spiegare come faccio a traslare la seguente tabella in xl (spero si capisca):

item/materiale/colore/35/36/37
item1/materiale/colore/1/0/1

in

item/materiale/colore/taglia/qtà/
item1/materiale/colore/35/1/
item1/materiale/colore/36/0/
item1/materiale/colore/37/1/

in sostanza, le taglie che nella prima colonna sono incolonnate diventano campi del database.
Grazie in anticipo
Angroz
Utente Junior
 
Post: 53
Iscritto il: 18/11/09 09:21

Sponsor
 

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Flash30005 » 23/03/10 23:52

Ma
item/materiale/colore/35/36/37
occupano una cella?
es A1
o
sei celle?
Item in A1
Materiale in B1
Colore in C1
35 in D1
36 in E1
37 in F1 ?

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Angroz » 24/03/10 00:12

ciao, occupano sei celle.
Angroz
Utente Junior
 
Post: 53
Iscritto il: 18/11/09 09:21

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi ricky53 » 24/03/10 00:45

Ciao,
i dati sono effettivamente strutturati come hai scritto oppure è una semplificazione per spiegare il problema?

Esempio: i dati sono sempre su due righe?

Più informazioni fornisci più facile sarà per noi aiutarti.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Angroz » 24/03/10 02:00

Ciao, si tratta di una semplificazione, le taglie sono molte di più. Grazie
Angroz
Utente Junior
 
Post: 53
Iscritto il: 18/11/09 09:21

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Flash30005 » 24/03/10 11:29

Questa macro fa quello che dici

Codice: Seleziona tutto
Sub Trasponi()
Sheets("Foglio1").Select
Righe = Sheets("Foglio1").Range("A2").CurrentRegion.Rows.Count
Colonne = Sheets("Foglio1").Range("A2").CurrentRegion.Columns.Count

    Sheets("Foglio2").Range("A1").FormulaR1C1 = "item"
    Sheets("Foglio2").Range("B1").FormulaR1C1 = "materiale"
    Sheets("Foglio2").Range("C1").FormulaR1C1 = "colore"
    Sheets("Foglio2").Range("D1").FormulaR1C1 = "taglia"
    Sheets("Foglio2").Range("E1").FormulaR1C1 = "qtà"
 
    Range(Cells(1, 4), Cells(Righe, Colonne)).Copy
    Sheets("Foglio2").Select
    Range("D2").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
   
    Sheets("Foglio1").Select
    Range(Cells(2, 1), Cells(2, 3)).Select
    Selection.Copy
    Sheets("Foglio2").Select
    Range("A2:C" & Colonne - 2).Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("Foglio1").Select
    Application.CutCopyMode = False
    Range("A1").S


Trascrive i dati da Foglio1 a Foglio2 sistemandoli,
dovrai adattarla alle tue esigenze, anche se ho previsto più taglie (colonne), perché avrai sicuramente più righe.

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Angroz » 29/03/10 17:57

Grazie, scusa il ritardo della mia risposta. Ok, ci provo, grazie!
Angroz
Utente Junior
 
Post: 53
Iscritto il: 18/11/09 09:21

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Angroz » 29/03/10 19:05

Ciao, l'ho visionata. Scusa ma conosco poco il comando Range per cui non capisco dove la devo personalizzare. Inoltre, l'item, il materiale e il colore potrebbero cambiare per cui me li deve sviluppare tutti. Illustro meglio l'esempio aggiungendo alcune righe per fare capire meglio la mia richiesta.

item/materiale/colore/35/36/37
item1/materiale1/colore1/1/0/1
item2/materiale2/colore2/2/0/0
item3/materiale3/colore3/0/1/0
ecc

in

item/materiale/colore/taglia/qtà/
item1/materiale1/colore1/35/1/
item1/materiale1/colore1/36/0/
item1/materiale1/colore1/37/1/
item2/materiale2/colore2/35/2
item3/materiale3/colore3/36/1

Grazie, attendo la risposta.
Angroz
Utente Junior
 
Post: 53
Iscritto il: 18/11/09 09:21

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Angroz » 29/03/10 19:07

azz, gli le qtà a zero le deve visionare, scusa non le ho trascritte negli esempi dell'item 2 e 3 ma sicuramente l'avrai capito.
Angroz
Utente Junior
 
Post: 53
Iscritto il: 18/11/09 09:21

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Anthony47 » 29/03/10 22:58

Prova con questa macro:
Codice: Seleziona tutto
Sub rearra()
PriTag = "D1"      '<<< Colonna con la prima taglia
OutSh = "Foglio2" '<<< Foglio di Output
'Sheets(OutSh).Cells.Clear     '<<< Scommentare se si vuole AZZERARE il foglio destinazione
'
NTag = Range("A1").End(xlToRight).Column - Range(PriTag).Column + 1
Range("A1").Resize(1, Range(PriTag).Column - 1).Copy Destination:=Sheets(OutSh).Range("A1")
For I = 2 To Range("A" & Rows.Count).End(xlUp).Row
 Range("A1").Resize(1, Range(PriTag).Column - 1).Offset(I - 1, 0).Copy _
    Destination:=Sheets(OutSh).Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(NTag)
 Range(PriTag).Resize(, NTag).Copy
 Sheets(OutSh).Range(Left(PriTag, 1) & Rows.Count).End(xlUp).Offset(1, 0) _
     .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
 Range(PriTag).Offset(I - 1, 0).Resize(, NTag).Copy
 Sheets(OutSh).Range(Left(PriTag, 1) & Rows.Count).Offset(0, 1).End(xlUp) _
     .Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
 Application.CutCopyMode = False
Next I
End Sub

Modifica le istruzioni marcate <<< come da tua esigenza.

Fai sapere, ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Angroz » 29/03/10 23:00

ok ci provo, grazie mille!
Angroz
Utente Junior
 
Post: 53
Iscritto il: 18/11/09 09:21

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Flash30005 » 29/03/10 23:04

Vedo che Anthony ha già suggerito una soluzione, quindi provala.

Per evitare ulteriori incomprensioni pubblico direttamente questo file

Ogni volta che Avvii la macro il Foglio2 sarà cancellato per poter scrivere i nuovi dati

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Angroz » 31/03/10 00:03

Grazie a tutti e due. La macro funzionano davvero molto bene. Approfitto della vostra gentilezza per chiedervi se mi aiutate a fare la stessa cosa in questo secondo caso che è un po' più complesso, ma non di molto.

devo passare da questa tabella:
Immagine

a questa:
Immagine

attendo i vs. preziosi suggerimenti e vi ringrazio anticipatamente per l'aiuto,
Angroz
Utente Junior
 
Post: 53
Iscritto il: 18/11/09 09:21

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Angroz » 31/03/10 07:12

... gli store ovviamente vanno da 1 a n ... i tre sono solo di esempio
Angroz
Utente Junior
 
Post: 53
Iscritto il: 18/11/09 09:21

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Anthony47 » 31/03/10 08:22

I link delle immagini sono inutilizzabili, le immagini quindi mancano.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Angroz » 31/03/10 15:12

Grazie, Anthony, strano l'antemprima me le dava, ok provo a farla in un altro modo:

StoreA StoreB ecc......(non c'è un limite fisso di store)
item/materiale/colore/35/36/37/35/36/37
item1/materiale1/colore1/1/0/1/1/1/1
item2/materiale2/colore2/2/0/0/1/2/1/
ecc

in

item/materiale/colore/Store/taglia/qtà/
item1/materiale1/colore1/StoreA/35/1/
item1/materiale1/colore1/StoreA/36/0/
item1/materiale1/colore1/StoreA/37/1/
item2/materiale2/colore2/StoreA/35/2/
item2/materiale2/colore2/StoreA/36/0/
item2/materiale2/colore2/StoreA/37/0/
item1/materiale1/colore1/StoreB/35/1/
item1/materiale1/colore1/StoreB/36/1/
item1/materiale1/colore1/StoreB/37/1/
item2/materiale2/colore2/StoreB/35/1/
item2/materiale2/colore2/Store B/36/2/
item2/materiale2/colore2/StoreB37/1/


Spero si capisca, in sostanza è la stessa tabella di prima con in più lo store (che è posizionatio sopra la cella della taglia 35) che viene trasposto nella colonna store della tabella di arrivo.

Grazie, attendo la risposta.
Angroz
Utente Junior
 
Post: 53
Iscritto il: 18/11/09 09:21

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Angroz » 31/03/10 15:18

per chiarezza, l'etichetta store si trova nelle celle D1, G1, J1, ecc della tabella di partenza mentre la seconda riga in posizione A2, B2, C2, ecc. contiene l'item, il materiale e il colore. In sostanza una riga di etichette in più sopra ogni riga di intestazione.

spero di essere stato chiaro, fatemi sapere, grazie.
Angroz
Utente Junior
 
Post: 53
Iscritto il: 18/11/09 09:21

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Angroz » 31/03/10 15:31

vediamo se riesco a farvele vedere così:

da:
Immagine

a:
Immagine

Fatemi sapere, grazie.
Angroz
Utente Junior
 
Post: 53
Iscritto il: 18/11/09 09:21

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Flash30005 » 31/03/10 17:49

Prova questo file

oppure sostituisci la macro precedente con questa
Codice: Seleziona tutto
Sub Trasponi()
Righe2 = Sheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("Foglio2").Range("A1:F" & Righe2).ClearContents
Righe = Sheets("Foglio1").Range("A2").CurrentRegion.Rows.Count
Colonne = Sheets("Foglio1").Range("A2").CurrentRegion.Columns.Count
    Sheets("Foglio2").Range("A1").FormulaR1C1 = "item"
    Sheets("Foglio2").Range("B1").FormulaR1C1 = "materiale"
    Sheets("Foglio2").Range("C1").FormulaR1C1 = "colore"
    Sheets("Foglio2").Range("D1").FormulaR1C1 = "Store"
    Sheets("Foglio2").Range("E1").FormulaR1C1 = "taglia"
    Sheets("Foglio2").Range("F1").FormulaR1C1 = "qtà"
    For RR1 = 2 To Righe - 1
        For CC1 = 4 To Colonne
        colS = Int((CC1 - 4) / 3) * 3
            Sheets("Foglio1").Range("A" & RR1 & ":C" & RR1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
            Sheets("Foglio1").Cells(1, 4 + colS).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 4).End(xlUp).Offset(1, 0)
            Sheets("Foglio1").Cells(2, CC1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 5).End(xlUp).Offset(1, 0)
            Sheets("Foglio1").Cells(RR1 + 1, CC1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 6).End(xlUp).Offset(1, 0)
        Next CC1
    Next RR1
    Range("A1").Select
End Sub


Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: XL Traslare dati da orizzontale a verticale (solo in parte)

Postdi Angroz » 31/03/10 21:38

Ciao, ho scaricato il file, funziona solo che traspone anche le tre celle A2, B2, C2 del foglio 1 che invece sono etichette. Come faccio ad eliminarle?
Angroz
Utente Junior
 
Post: 53
Iscritto il: 18/11/09 09:21

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "XL Traslare dati da orizzontale a verticale (solo in parte)":


Chi c’è in linea

Visitano il forum: raimea e 14 ospiti