Condividi:        

[Excel 2003] Incollare più fogli su nuovo foglio in vertical

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

[Excel 2003] Incollare più fogli su nuovo foglio in vertical

Postdi enrico43 » 14/09/14 11:13

Buon giorno e buona domenica a tutto il forum,
purtroppo il Cerca non mi è stato d’aiuto, ovvero ho trovato qualcosa ma l’incollaggio avveniva in orizzontale e non sono stato capace di modificarlo. Il mio VBA era ottimo, ma si è molto arrugginito.
Il titolo è il mio problema e l’allegato contiene 2 files, l’originale ed il risultato che vorrei ottenere.
Ne ho moltissimi da “unificare” ed ho calcolato che manualmente mi occorre più di un mese, poiché l’allegato è uno dei più piccoli.
Devono essere incollate anche le formule e l’incollaggio dovrebbe avvenire lasciando una riga vuota tra un foglio ed il successivo. A tutto il resto penserò io: formattazioni, totali, collegamenti ipertestuali, etc.
Un ultima richiesta: al piede della colonna M una formula o macro che mi sommi i numeri in grassetto.
Ringraziando per l’attenzione e scusandomi per la sbrodolata, porgo i miei più cordiali saluti
Enrico
http://www.filedropper.com/enrico
enrico43
Utente Senior
 
Post: 208
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Sponsor
 

Re: [XP Sp3-Excel 2003] Incollare più fogli su nuovo foglio,

Postdi enrico43 » 14/09/14 14:45

Il titolo, stranamente incompleto, era "..su nuovo foglio, in sequenza verticale".
Rispolverando le mie conoscenze ho impostato questa macro, però su altro file con nomi dei fogli come sotto:
Codice: Seleziona tutto
Sub Macro1()
'
' Macro1 Macro
' Macro registrata il 14/09/2014 da enrico
'

'
    Sheets("App. 1 ACQUE CHIARE SUD ").Select
    Set LastCell = ActiveSheet.UsedRange.SpecialCells(xlLastCell)
    Range(Range("A5"), LastCell).Select
    Selection.Copy
    Sheets("Foglio1").Select
    Range("A1").Select
    Range("A65536").End(xlUp).Offset(1, 0).Select
    With ActiveCell
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    Sheets("App. 2 Acque chiare sud ").Select
    Set LastCell = ActiveSheet.UsedRange.SpecialCells(xlLastCell)
    Range(Range("A5"), LastCell).Select
    Selection.Copy
    Sheets("Foglio1").Select
    Range("A1").Select
    Range("A65536").End(xlUp).Offset(1, 0).Select
    With ActiveCell
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = xlAutomatic
    End With
    End With
    End With
End Sub

Però ... mi seleziona l'area giusta con le righe ma fino all'ultima colonna IV e il file diventa mostruosamente grande (dato che i fogli sono tanti). Inoltre non accetta LineStyle nella formattazione delle celle.
Cordiali saluti
Enrico
enrico43
Utente Senior
 
Post: 208
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Re: [XP Sp3-Excel 2003] Incollare più fogli su nuovo foglio,

Postdi enrico43 » 14/09/14 15:35

Scusate le aggiunte, ma non ho capito come editare il post.
Volevo aggiungere che la mia macro include foglio per foglio (ne ho presi solo 2), ma ovviamente nella macro dovrebbe esserci l'istruzione array per spazzolarli e ricopiarli tutti. Se può essere utile, le colonne dei fogli da copiare sono al massimo 10 e minimo 7.
Saluti
Enrico
enrico43
Utente Senior
 
Post: 208
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Re: [Excel 2003] Incollare più fogli su nuovo foglio in vert

Postdi Anthony47 » 15/09/14 01:58

Ciao enrico43, benvenuto nel forum.
Perdona, ma dovresti scrivere che cosa vorresti fare... Lavorare su dei file di esempio senza descrizione non e' il massimo. I fogli hanno tutti la stessa struttura? Va copiato tutto o che cosa? Perche' alcuni fogli hanno delle colonne nascoste? Altre informazioni in tuo possesso sul da farsi sono "altamente gradite".
Ti aspettiamo...
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel 2003] Incollare più fogli su nuovo foglio in vert

Postdi enrico43 » 15/09/14 14:42

Hai ragione, peraltro i file sorgente sono diversi fra loro, sia come formattazione che posizione dei dati.
A questo punto, dopo che li ho sistemati e apertone uno, mi basterebbe poter copiare il contenuto (e relative formule) delle prime 13 colonne di ciascun foglio su un nuovo foglio in successione verticale, col classico
Range("A65536").End(xlUp).Offset(3, 0).Select
With ActiveCell
Selection.PasteSpecial Paste:=xlPasteAll, Ope.......
Ed infine una formula o macro che mi sommi ai piedi di una colonna tutte le celle con numero in grassetto.
Ti ringrazio dell'attenzione e della pazienza.
Cordiali saluti
Enrico
enrico43
Utente Senior
 
Post: 208
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Re: [Excel 2003] Incollare più fogli su nuovo foglio in vert

Postdi enrico43 » 17/09/14 12:24

Ciao Anthony,
ieri sera ho riprovato a risolvere e ne è uscito un file che ti allego, dove nel primo foglio ti ho scritto alcune annotazioni, compresa la macro che tuttavia dovrebbe arrivarti con il file (ma che mi da errore).
http://www.filedropper.com/prova_9
Grazie ancora dell'aiuto.
Un saluto
Enrico
enrico43
Utente Senior
 
Post: 208
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Re: [Excel 2003] Incollare più fogli su nuovo foglio in vert

Postdi enrico43 » 17/09/14 15:10

Funziona, l'errore è che l'avevo messa sul foglio e non nel workbook. Però, siccome le colonne che contengono le stesse voci nei vari fogli sono diverse (in 1 è la J, in un altro la M, etc), a sistemarle perdo lo stesso tempo che al copia/incolla. Perciò ho desistito. Diverso se tu riuscissi con qualche istruzione a copiare i fogli in modo che corrispondano le colonne, io non sono riuscito a trovare neppure il ragionamento.
Un saluto
Enrico
enrico43
Utente Senior
 
Post: 208
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Re: [Excel 2003] Incollare più fogli su nuovo foglio in vert

Postdi Flash30005 » 19/09/14 01:52

Ciao Enrico43 e benvenuto anche da parte mia
Ho scaricato il tuo file e ho subito visto che la struttura dei fogli, contenuti nella cartella, non è identica pertanto mi risulta difficile comprendere cosa devi inserire nel riepilogo visto che i dati (testata) sono differenti.

Rimando in attesa di eventuali delucidazioni.
ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel 2003] Incollare più fogli su nuovo foglio in vert

Postdi enrico43 » 19/09/14 06:31

L’obbiettivo sarebbe quello di copiare sul foglio “Riepilogo” il contenuto degli altri 3 fogli (ci sono però file con 35-40 fogli), mettendoli in fila uno dopo l’altro, senza copiare però le intestazioni di colonna (cioè, se possibile, la copia deve essere fatta dalla riga 4) e, dulcis in fundo, facendo corrispondere le colonne di dati, cioè la colonna “Sconto” dei 3 fogli deve essere copiata nella colonna “Sconto” del foglio Riepilogo e così via.
Ti riallego il file ringraziandoti per l’interessamento, addirittura notturno (..di Flash30005 » 19/09/14 02:52).
http://www.filedropper.com/prova_10
Un saluto
Enrico
enrico43
Utente Senior
 
Post: 208
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Re: [Excel 2003] Incollare più fogli su nuovo foglio in vert

Postdi Anthony47 » 21/09/14 23:08

Come tu stesso noti, i fogli hanno intestazioni disomogenee, con titoli talvolta diversi, largo uso di celle unite, persino impossibilita' a identificare la fine dei dati nei fogli (vedasi l' uso di celle unite in Foglio "App. 14 MECCANICO" ultima cella di colonna C, e la presenza di dati estranei alle tabelle nelle colonne G:J):
Immagine
caricare immagini
Foglio "RIEPILOGO"

Immagine
free image upload
Foglio "App. 14 ARCH"

Immagine
invia immagini
Foglio "App. 14 MECCANICO" e "App. 14 IMP ELET"

A proposito della difficolta' a identificare la fine della tabella, il sadico che ti passa i fogli di origine (oltre a quanto detto prima circa le colonne unite e presenza di dati estranei), ha voluto fare in modo che l' ultima cella di colonna C (la piu' attendibile per essere usata) contenesse valori sempre diversi (una volta contiene "T O T A L E euro", altre volte "TOTALE GENERALE", altre volte non esiste perche' in realta' presente in colonna A comunque col titolo "IMPORTO COMPLESSIVO DELL'OPERA"); e idem per la cella appena precedente (che una volta contiene "SUB TOTALE NUOVI PREZZI", un' altra "SUB TOTALE ELENCO PREZZI" e un' altra ancora "SUB TOTALENUOVO PREZZI ")

In questa situazione qualsiasi elaborazione fatta da un programma produrra' risultati aleatori, o peggio (seguendo la regola dello "shit in - shit out).

Quindi, con la situazione presente nei file fin'ora allegati, io non vedo prospettive di automazione.

Per cambiare il mio orientamento sarebbe necessario che:
-le intestazioni delle colonne fossero "uguali" e non simili
-fosse possibile identificare la fine dei dati da copiare (oggi non e' possibile per la presenza di dati spuri in colonne G:H e per l' aleatorieta' dei valori in coda a colonna C).

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[Excel 2003] Incollare più fogli su nuovo foglio in vertical":


Chi c’è in linea

Visitano il forum: Nessuno e 126 ospiti