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

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

Postdi Flash30005 » 31/03/10 22:22

Si c'era un errore
qui
Codice: Seleziona tutto
    For RR1 = 3 To Righe

e qui
Codice: Seleziona tutto
            Sheets("Foglio1").Cells(RR1, CC1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 6).End(xlUp).Offset(1, 0)


ma comunque sostituisci tutta la macro

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 = 3 To Righe
        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, CC1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 6).End(xlUp).Offset(1, 0)
        Next CC1
    Next RR1
    Range("A1").Select
End Sub


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-

Sponsor
 

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

Postdi Angroz » 01/04/10 00:24

Ciao, grazie, ora le etichette vengono eliminate ma non tornano le quantità. Vengono messe tutte sul primo item. Puoi dirmi perchè?
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 » 01/04/10 10:43

Non capisco come fa a non funzionarti
Ti invio questo file che ha all'interno la stessa macro inviata e spiegami meglio cosa c'è che non va

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 » 01/04/10 13:43

Grazie per il feedback, ok te lo mostro con le immagini:

imposto questi dati
Immagine

e ottengo questa tabella trasposta
Immagine

Le quantità non vengono associate nel modo corretto.
Mi aiuti a capire perchè?
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 » 01/04/10 14:14

Non stai usando il mio file
io ho altri dati di origine con dei valori 2, 0 etc a te vedo solo celle in bianco
vedi se il problema lo riscontri anche con il file ultimo inviato, denominato TrasponiParziale3.xls
e avvialo senza modificare nulla
poi inseirsci i tuoi dati e riprova.

Fai sapere
Ciao

P.s. Controlla se per caso in quell'area hai i font di colore bianco :roll:
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 Flash30005 » 01/04/10 14:33

Ho capito il motivo...

Proprio perché nelle celle di origine non c'è alcun valore quando avevi garantito che ci fosse almeno lo 0 (zero)
comunque sostiutuisci la macro 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 = 3 To Righe
        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)
            If Sheets("Foglio1").Cells(RR1, CC1).Value = "" Then
                Sheets("Foglio2").Cells(Rows.Count, 6).End(xlUp).Offset(1, 0).Value = 0
            Else
                Sheets("Foglio1").Cells(RR1, CC1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 6).End(xlUp).Offset(1, 0)
            End If
        Next CC1
    Next RR1
    Range("A1").Select
End Sub

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 » 01/04/10 14:41

Grazie, io ho usato il tuo file! Ora ho capito, se metto 0 funziona mentre se lascio la cella vuota fa casino. E' possibile fare in modo che tratti se c'è la cella vuota lui la considera come se fosse 0?
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 » 01/04/10 14:44

SI!

Leggi il mio post delle ore 15:33
evidentemente non hai aggiornato la pagina prima di inviare il tuo post

quindi sostituisci la macro con quella inviata

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 » 01/04/10 15:46

Ho letto il post, ora va tutto ok! 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 » 07/04/10 17:11

Ti chiedo ancora una cortesia poichè questa macro mi è davvero utile.
Cosa devo cambiare nel caso debba aggiungere colonne (vedi esempio sotto) che però non in tutti casi debbo essere trasposte?

da:
Immagine

a:
Immagine

Puoi pf aiutarmi (magari indicandomi come commento le modifiche sulla macro così la capisco meglio visto che ci ho provato ma ci sono riuscito solo in parte).
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 » 07/04/10 22:39

e ora da dove sono uscite queste descrizioni 1, 2, 3, 4?
non vedo perché dovresti modificare la macro
è sufficiente eseguirla e poi aggiungere le tre colonne per le tre descrizioni dove vuoi tu.

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 » 08/04/10 00:35

Ciao, grazie per la risposta. Non sono descrizioni ma attributi del database, per brevità li ho chiamati Desc. e non li ho riempiti, perdona la poca chiarezza.

Come faccio ad aggiungere colonne e continuare ad usare la macro in modo che funzioni come ti ho illustrato?
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 » 08/04/10 01:40

Beh non è facile cambiare una macro nata con delle specifiche perché ogni codice fa in modo di rispettarle tutte, infatti ho dovuto modificare diverse righe per adattarsi a questa variazione.
Prova questa
Codice: Seleziona tutto
Sub Trasponi()
Righe2 = Sheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("Foglio2").Range("A1:J" & 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 = "Descr 1"
    Sheets("Foglio2").Range("E1").FormulaR1C1 = "Descr 2"
    Sheets("Foglio2").Range("F1").FormulaR1C1 = "Descr 3"
    Sheets("Foglio2").Range("G1").FormulaR1C1 = "Store"
    Sheets("Foglio2").Range("H1").FormulaR1C1 = "taglia"
    Sheets("Foglio2").Range("I1").FormulaR1C1 = "qtà"
    For RR1 = 3 To Righe
        For CC1 = 8 To Colonne

        colS = Int((CC1 - 8) / 3) * 3
            Sheets("Foglio1").Range("A" & RR1 & ":F" & RR1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
            Sheets("Foglio1").Cells(1, 8 + colS).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 7).End(xlUp).Offset(1, 0)
            Sheets("Foglio1").Cells(2, CC1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 8).End(xlUp).Offset(1, 0)
            Sheets("Foglio1").Cells(RR1, CC1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 9).End(xlUp).Offset(1, 0)

        Next CC1
    Next RR1
    Range("A1").Select
End Sub


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 » 08/04/10 09:29

Gira perfettamente! 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 Angroz » 08/04/10 11:41

Purtroppo facendola girare c'è di nuovo questo problema (me l'avevi già risolto sul file TrasponiParziale3.xls aggiungendo: If Sheets("Foglio1").Cells(RR1, CC1).Value = "" ........). Gli spazi sulle taglie deve riconoscerli come 0. Al momento. Questo esempio è quello a tre colonne, te lo allego solo per farti capire meglio il problema. Mi aiuti?



Angroz ha scritto:Grazie per il feedback, ok te lo mostro con le immagini:

imposto questi dati
Immagine

e ottengo questa tabella trasposta
Immagine

Le quantità non vengono associate nel modo corretto.
Mi aiuti a capire perchè?
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 » 08/04/10 12:00

Ho analizzato il vecchio suggerimento ed ho modificato la macro in questo modo (ci sono andato a naso). Sembra funzionare, ho agito bene? ...gli smile sono degli 8, non so come eliminarli.

Sub Trasponi ()
Righe2 = Sheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("Foglio2").Range("A1:J" & 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 = "Descr 1"
Sheets("Foglio2").Range("E1").FormulaR1C1 = "Descr 2"
Sheets("Foglio2").Range("F1").FormulaR1C1 = "Descr 3"
Sheets("Foglio2").Range("G1").FormulaR1C1 = "Store"
Sheets("Foglio2").Range("H1").FormulaR1C1 = "taglia"
Sheets("Foglio2").Range("I1").FormulaR1C1 = "qtà"
For RR1 = 3 To Righe
For CC1 = 8 To Colonne

colS = Int((CC1 - 8) / 3) * 3
Sheets("Foglio1").Range("A" & RR1 & ":F" & RR1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Sheets("Foglio1").Cells(1, 8 + colS).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 7).End(xlUp).Offset(1, 0)
Sheets("Foglio1").Cells(2, CC1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 8).End(xlUp).Offset(1, 0)
If Sheets("Foglio1").Cells(RR1, CC1).Value = "" Then
Sheets("Foglio2").Cells(Rows.Count, 9).End(xlUp).Offset(1, 0).Value = 0
Else

Sheets("Foglio1").Cells(RR1, CC1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 9).End(xlUp).Offset(1, 0)
End If
Next CC1
Next RR1
Range("A1").Select
End Sub
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 » 08/04/10 12:56

Dovrebbe essere così

Codice: Seleziona tutto
Sub Trasponi()
Righe2 = Sheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("Foglio2").Range("A1:J" & 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 = "Descr 1"
    Sheets("Foglio2").Range("E1").FormulaR1C1 = "Descr 2"
    Sheets("Foglio2").Range("F1").FormulaR1C1 = "Descr 3"
    Sheets("Foglio2").Range("G1").FormulaR1C1 = "Store"
    Sheets("Foglio2").Range("H1").FormulaR1C1 = "taglia"
    Sheets("Foglio2").Range("I1").FormulaR1C1 = "qtà"
    For RR1 = 3 To Righe
        For CC1 = 8 To Colonne

        colS = Int((CC1 - 8) / 3) * 3
            Sheets("Foglio1").Range("A" & RR1 & ":F" & RR1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
            Sheets("Foglio1").Cells(1, 8 + colS).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 7).End(xlUp).Offset(1, 0)
            Sheets("Foglio1").Cells(2, CC1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 8).End(xlUp).Offset(1, 0)
            If Sheets("Foglio1").Cells(RR1, CC1).Value = "" Then
                Sheets("Foglio2").Cells(Rows.Count, 9).End(xlUp).Offset(1, 0).Value = 0
            Else
                Sheets("Foglio1").Cells(RR1, CC1).Copy Destination:=Sheets("Foglio2").Cells(Rows.Count, 9).End(xlUp).Offset(1, 0)
            End If
        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 » 09/04/10 12:09

Tutto ok, gira, grazie!

Ti chiedo ancora una cortesia. Puoi dirmi dove devo modificare la macro che mi avevi passato (vedi sotto) aggiungendo però sei colonne (anzichè 3) prima della trasposizione? In altre parole, questa macro traspone a partire dalla colonna "D", io vorrei che lo facesse dalla colonna "J" cioè sei colonne dopo.

Flash30005 ha scritto: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
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 » 09/04/10 12:28

Io non capisco!!!
o c'è poca chiarezza in quello che devi fare oppure stai cambiando i dati di input di volta in volta :roll:
quindi per far sì che inizi a "giocare" con le macro devi prendere il file di riferimento (il primo) e confrontarlo con l'ultimo che ha la traposizione spostata di 3 colonne più a destra,
vedendo le differenze tra le due macro potrai sicuramente modificarla per adattarla a 6 colonne come ti serve ora.

Dopo che ci hai lavorato un po' e in caso di problemi fatti risentire. ;)

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 » 09/04/10 14:11

Ciao, quella precedente funziona, tutto ok. Questa richiesta si riferisce ad una trasposizione di una tabella più semplice (la prima che avevo postato). Devo solo aggiungere queste sei colonne in più (che non devono essere trasposte) e vorrei sapere dove devo agire. Scusami se non sono stato chiaro.
Angroz
Utente Junior
 
Post: 53
Iscritto il: 18/11/09 09:21

PrecedenteProssimo

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: Nessuno e 11 ospiti