Concatenare i fogli xls



  • Concatenare i fogli xls
    di Simone (utente non iscritto) data: 11/05/2009

    Spero ci sia qualcuno in grado di aiutarmi:
    vorrei sapere se esiste un modo per concatenare tra loro le formule di più fogli di uno stesso file di excel. ad esempio:
    foglio 1
    foglio 2
    foglio 3
    poichè la grafica e le righe sono uguali in tutti i fogli vorrei che se nel foglio 2 compare la formula "= foglio 1 cella a5", nel foglio 3 copmaia la formula "= foglio 2 cella a5", nel foglio 4 compaia "= foglio 3 cella a5" e così via....
    in più qualcuno sa se avendo impostato i margini di un foglio excel ed essendo tutti glia altri graficamente uguale c'è un modo per automatizzare tale impostazione senza doverla ripetere foglio per foglio??
    grazie.



  • di Simone (utente non iscritto) data: 12/05/2009

    Scusate, ho inoltre un altro problema sempre relativo alla concatenazione di più fogli di uno stesso file.
    ipotizziamo che io abbia il foglio 1 in cui c'è un elenco di dati.
    il foglio 2 ha delle sue formule specifiche del foglio e in più ad esempio la cella b1 ha la formula = foglio 1 cella a5.
    a questo punto c'è un modo per dire che la stessa cella b1 del foglio 3 abbia la formula = foglio 1 cella a6, e poi nel foglio 4 sempre alla b1 la formula = foglio 1 cella a7 e così via...
    se qualcuno sa rispondermi mi risparmia una settimana di lavoro sicuro....grazie



  • di Baz (utente non iscritto) data: 12/05/2009

    Ciao simone,
    non ho capito molto bene cosa intendi con
    "..vorrei che se nel foglio 2 compare la formula"

    prova spiegarti meglio.

    c'è sempre la formula in a5 o potrebbe esserci?

    dovresti spiegare le possibili variazioni ...

    se i margini impostati nel foglio1 li vuoi impostare anche negli altri nessun problema

    infine il tuo secondo post proprio non l'ho capito, prova con un esempio chiaro:
    foglio1 cella a3 ("prova")

    foglio2 cella a3 ...

    ciao


  • Provo a spiegarmi
    di Simone (utente non iscritto) data: 12/05/2009

    Ok baz, hai ragione...provo a spiegarmi meglio:
    ho un foglio 1 in cui ho un elenco di nomi in verticale, ad esempio 500 nomi.
    poi ho 50 fogli in ognuno dei quali ci sono 10 "schede" che fanno riferimento a dati e specifiche di ogni nome del foglio 1 (quindi 10 per 50 fogli = 500 schede = 500 nomi).
    all'inizio di ogni scheda per non riportarlo a mano c'è una formula che riprende il nome del foglio 1, scorrendoli via via in verticale. quindi. se:
    foglio 1:
    a1 = mario
    a2 = peppe
    a3 = luca
    nel mio foglio 2 dovrò magari avere:
    nella cella esempio l5 = foglio 1 a1
    nella cella esempio l20 = foglio 1 a2
    nella cella esempio l35 = foglio 1 a3 e così via anche per gli altri 50 fogli??
    spero di essere stato più chiaro altrimenti dimmi....grazie in anticipo.
    ps: mi sai dire invece come devo fare per impostare tutti e 50 i foglio con i margini del foglio base?





  • di Baz (utente non iscritto) data: 12/05/2009

    Ciao,
    ho supposto che i fogli si chiamino foglio1 (che lo usi come matrice) poi foglio2 ...

    prova vedere se ti va bene

    ciao
     
    Sub AggionaMargini()
    Dim myLeftMargin As Single
    Dim myRightMargin As Single
    Dim myTopMargin As Single
    Dim myBottomMargin As Single
    Dim myHeaderMargin As Single
    Dim myFooterMargin As Single
    Dim i As Integer
    Dim Nome As String
    
    'legge i margini del Foglio1
    With Sheets("Foglio1").PageSetup
        myLeftMargin = .LeftMargin
        myRightMargin = .RightMargin
        myTopMargin = .TopMargin
        myBottomMargin = .BottomMargin
        myHeaderMargin = .HeaderMargin
        myFooterMargin = .FooterMargin
    End With
    
    For i = 1 To Sheets.Count
       Nome = Sheets(i).Name
        
        If i > 1 Then 'controlo che non sia il primo foglio
            'aggiorno la formula
            With Sheets(i)
                'in A5 mette il valore A5 del foglio precedente
                .Cells(5, 1).Formula = "=Foglio" & i - 1 & "!a5"
            End With
            
            'aggiorno i margini come nel foglio1
            With Sheets(Nome).PageSetup
                .LeftMargin = myLeftMargin
                .RightMargin = myRightMargin
                .TopMargin = myTopMargin
                .BottomMargin = myBottomMargin
                .HeaderMargin = myHeaderMargin
                .FooterMargin = myFooterMargin
            End With
        End If
    Next
         
    End Sub
    


  • Ancora dubbi
    di Simone (utente non iscritto) data: 12/05/2009

    Ciao baz,
    intanto ti ringrazio per il tempo che mi stai dedicando.
    riguardo alla questione invece:
    a) in merito ai margini ho risolto in realtà in maniera molto semplice (che stupido a non averci pensato): ho semplicemente selezionato contemporaneamente tutti i fogli di mio interesse e ho impostato gli stessi valori di margine.
    b) in merito invece ai collegamenti con il foglio dati e poi a catena sugli altri mi sembra di aver capito che tu useresti una macro...io non l'ho mai utilizzata, saresti così gentile da spiegarmi i procedimenti per come effettuarla e dove è che deve scrivere i "comandi"?
    grazie mille.



  • di Baz (utente non iscritto) data: 12/05/2009

    Ciao,
    prima di passare al codice mi sembra sia il caso di verificare se io ho capito.

    ti indicherò i pun ti da analizzare:

    1
    il foglio1 sia la tua matrice (dal quale andrai poi a fare l'aggiornamento negli altri fogli 2 , 3 , 4 , ... , 50

    2
    ogni quanto dovresti fare l'aggiornamento?
    soprattutto come dovrebbe avvenire?

    3
    le formule nel foglio2 sono sempre fisse a5 di un foglio = a5 de lfoglio precedente?
    non credo, altrimenti non avrebbe senso tale aggiornamento

    4
    devo capire come lavori


    poi passeremo all'inserimento del codice vba





  • di Baz (utente non iscritto) data: 12/05/2009

    Magari se postassi un file di esempio no nsarebbe male (togli eventuali dati sensibili)



  • di Baz (utente non iscritto) data: 12/05/2009

    Gli ho dato una veloce occhiata, ma i 2 fogli di esempio, sono sempre diversi tra loro? in base a cosa si dovrebbe capire se una cella avrà una formula?

    in relatà non ho ancora capito il motivo del tuo aggiornamento, inserisci dei nuovi fogli o nuovi dati?

    scusami ma vorrei capire bene prima di "creare" un qualcosa che poi risulta errato

    ciao


  • Esempio
    di Simone (utente non iscritto) data: 12/05/2009

    I 2 fogli sono sempre uguali graficamente e nelle dimensioni e contengono 10 schede tipo quelle che ti ho inviato.
    ho bisogno che nelle righe che ti ho colorato di giallo ci siano le formule come quelle che già ti ho inserito io....solo che io le ho messe fino ad ora, ad esempio, in 30 fogli ma non vorrei continuare per un mese mer arrivare magari a 1000.....vorrei ci fosse qualcosa che automatizzasse..........grazie...



  • di Baz (utente non iscritto) data: 13/05/2009

    Ciao,
    hai provato selezionando la linguetta del foglio (esempio "scheda 5_8")

    - premi il tasto dx

    - premi "sposta o copia"

    - spunta "crea una copia"

    - se vuoi seleziona la voce "(sposta alla fine)"

    - poi ok

    non fai altro che creare una copia perfetta (anche nei margini) del foglio di partenza

    a questo punto non ti resta che rinominare il nuovo foglio [sarà diventato "scheda 5_8 (2)"]

    cancellare i dati che non ti ineressano

    se tutto questo lo vuoi automatizzare è un'altro discorso da quello che avevo capito io

    per ora dimmi se quello che ti ho sopra esposto potrebbe andarti bene, poi procediamo per step




  • di Simone (utente non iscritto) data: 13/05/2009

    Buongiorno baz,
    avevo già provato e non va bene.
    il problema attualmente non è quello di creare delle copie del foglio perchè anche selezionando l'angolo in alto a sinistra e facendo il copia incolla semplice nei vari fogli mi riporta i le schede con tutte le formule realtive al foglio e i formati corretti.....
    il problema è che quando faccio questo, o quando creo una copia del foglio come hai detto tu, non mi riporta gli automatismi riferiti al foglio generale (nel caso dell'esempio all'elenco in foglio 1), cioè quelli che devono andare nelle celle gialle....



  • di Baz (utente non iscritto) data: 13/05/2009

    Mi vedo costretto contraddirti

    se seleziono il folgio(come da file di esempio)
    scheda 1_4
    nella cella b7 c'è la formula ='foglio 1'!c5

    dopo la creazione del foglio (come precedentemente indicato, con la spunta su copia)
    viene creato il foglio
    scheda 1_4 (2)
    e nella cella b7 c'è sempre la formula
    ='foglio 1'!c5

    cosa non ti torna?



  • di Simone (utente non iscritto) data: 13/05/2009

    Che io vorrei ci fosse foglio1 c6.... poi alla terza copia foglio 1 c7.... alla quarta foglio 1 c8 e così via....



  • di Baz (utente non iscritto) data: 13/05/2009

    Scusa, ma cosaintendi alla terza copia ....

    non rinomini mai i fogli?

    o sempre in un determinato modo?



  • di Simone (utente non iscritto) data: 13/05/2009

    Si li rinomino, era un esempio...immagina che abbia 500 fogli in ognuno dei quali ci sono 10 schede come quelle che hai nell'esempio.
    il foglio 1 è quello con l'elenco dati.
    il foglio 2 avrà le schede da 1 a 10.
    il foglio 3 avrà le schede da 11 a 20....
    poichè ogni scheda al di là di specifiche formule del foglio che facendo il copia incolla vengono tranquillamente riportate, fa riferimento a un nome e in generale a una riga di dati del foglio 1, su ogni scheda dovrà essere riportato il "titolo identificativo" cioè il nome e i dati della riga del corrispondente foglio 1.
    e' a questo punto che si crea il problema perchè i dati del foglio 1 come vedi sono sottoforma di elenco mentre le celle gialle che ti ho contrassegnato che devono essere riempite attualmente le ho "formulate a mano" ma vorrei che ci fosse un automatismo...
    spero di essere stato chiaro.....



  • di Baz (utente non iscritto) data: 13/05/2009

    Scusa, ora credo aver capito ....

    fammi pensare un pò, spero non sia molto urgente, lo vedrò meglio nel pomeriggio



  • di Simone (utente non iscritto) data: 13/05/2009

    Ok, grazie....confido in te.



  • di Baz (utente non iscritto) data: 13/05/2009

    Prova mettere le seguenti formule


    in a7
    =cerca.vert(g66;'foglio 1'!$a$5:$f$500;2;falso)

    b7
    =cerca.vert(g66;'foglio 1'!$a$5:$f$500;3;falso)

    g7
    =cerca.vert(g66;'foglio 1'!$a$5:$f$500;4;falso)

    f38
    =cerca.vert(g66;'foglio 1'!$a$5:$f$500;6;falso)

    poi copia le formule (a7:g7) in a72

    poi copia la formula (f38) in f103

    e così via

    il tutto è vincolato al valore della cella g1 (scheda iniziale)
    ho ipotissato che il range dove pescare i dati nel foglio1 sia a5:f500 al limite modificalo a tuo piacere

    fammi sapere





  • di Simone (utente non iscritto) data: 13/05/2009

    Ciao baz,...non va.
    mettendo cert.vert devo comunque scrivere la formula e poi quando come dici tu la copio nelle schede sottostanti dello stesso foglio il problema è che la formula non mi riporta la cella di mio interesse.
    come potrai vedere dal file, ipotizzando soltanto le prime due schede, e quindi ad esempio solo le celle a7 e a72, se io ricopio la formula messa in a7 (in cui mi rimanda alla cella ad esempio b5 del foglio 1), nella cella a72 mi mette il valore della cella b70 del foglio 1 mentre io ho bisogno che metta quello di b6 e così via, di 1 in 1 in più...



  • di Baz (utente non iscritto) data: 13/05/2009

    Guarda il file che ho allegato, a me funzia

    le formule le homesse nela scheta 1_4 e solo nella riga 7 del foglio scheda 5_8

    mi sono permesso di modificarti anche le celle (rosse) del primo folgio, non mi piaceva il risultato #div/0!

    ciao



  • di Simone (utente non iscritto) data: 13/05/2009

    Grandissimo baz....mi hai risolto un gran problema....
    grazie ancora, davvero.
    ciao e a buon rendere........



  • di Baz (utente non iscritto) data: 13/05/2009

    Allora funziona!

    hai controllato cosa non andava nel tuo?

    comunque meglio cosi', alla prossima

    ciao



  • di Baz (utente non iscritto) data: 13/05/2009

    Allora funziona!

    hai controllato cosa non andava nel tuo?

    comunque meglio cosi', alla prossima

    ciao