Copiare molte formule



  • Copiare molte formule
    di Fabio (utente non iscritto) data: 03/07/2014 09:22:50

    Buongiorno,
    con una macro copio delle formure inserite nella prima riga (circa 10 celle) nelle righe successive.
    Le righe in cui vado a copiare sono diverse (dalle 3 mila alle 10 mila) e questo rallenta moltissimo la macro.
    Ho anche provato a inserire cil calcolo manuale ma queando riattivo quello automatico ci mette sempre molto tempo.
    Esiste qualche altro modo per velocissare la macro?
    Grazie mille e buona giornata.



  • di Lucas87 data: 03/07/2014 09:37:13

    Ciao
    Usare una macro per copiare delle formule è uno spreco di risorse.
    Fai fare alla macro quello che fanno le formule...sicuramente velocizzi il processo.



  • di Fabio (utente non iscritto) data: 03/07/2014 09:55:13

    Ciao Lucas e grazie per la risposta.
    Non essendo un grande esperto di VBA, potreste aiutarmi?
    Alcune formule sono complesse (es. =SE(VAL.ERRORE(SCARTO(TIT!$D$2;CONFRONTA($B2;INDIRETTO("TIT!$D$3:$D"&$AT$1); 0);65));"";SCARTO(TIT!$D$2;CONFRONTA($B2;INDIRETTO("TIT!$D$3:$D"&$AT$1); 0);65)) ) e non saprei come scriverle in VBA.
    Mi sarebbero utili quelche esempio.
    Grazie mille.



  • di Lucas87 data: 03/07/2014 10:35:36

    Dovresti allegare un file di esempio e spiegare cosa vuoi ottenere



  • di Fabio (utente non iscritto) data: 03/07/2014 12:16:57

    Ho allegato un file con alcuni dati e alcune formule.
    Praticamente, devo copiare le formule (Foglio1 - dalla cella C1 alla H1) nelle righe sottostante e poi trasformarle in valori.
    Al momento utilizzo la funzione copia, incolla formule e poi copia, incolla valori.
    Essendo che le righe da copiare sono molte, la macro diventa lentissima.
    Grazie



  • di lepat (utente non iscritto) data: 03/07/2014 12:38:58

    Lucas87 ha detto:
    Usare una macro per copiare delle formule è uno spreco di risorse.
    Fai fare alla macro quello che fanno le formule...sicuramente velocizzi il processo.
    ....
    Dovresti allegare un file di esempio e spiegare cosa vuoi ottenere


    e tu insisti con le formule, dimenticale e spiega quale risultato vuoi ottenere



  • di Lucas87 data: 03/07/2014 12:53:14

    Devi spiegare cosa fanno le formule...



  • di Lucas87 data: 03/07/2014 13:04:48

    Forse ho capito
    Cerchi il codice nel foglio TIT e restituisce i valori in colonna BP:BU...giusto?
    1 -Sarebbe bastato un cerca.vert.
    2 -Perchè fai questa operazione con una macro? Trascina le formule e lasciale li anche se non le usi.

    Fare una macro che faccia questo non è complicato.

    Confermi quanto sopra?



  • di Fabio (utente non iscritto) data: 03/07/2014 13:09:52

    Prendere il valore della cella B2 del Foglio1, cercare questo valore nella colonna D del foglio TIT.
    Se trova il valore, copiare il contenuto che trova nelle colonne BP - BQ - BR - BS - BT - BU del foglio TIT e incollarli nella riga 2 del Foglio1 (a lato del valore ricercato)
    Se non trova il valore, incollare "" al posto del contenuto



  • di Fabio (utente non iscritto) data: 03/07/2014 13:13:45

    Per Lucas87
    se metto le formule in tutte le celle che potrebbero essere utilizzate, (in teoria 65536), il file diventa enorme.
    Ecco perchè copiare le formule solo dove serve a seconda delle righe valorizzate



  • di Lucas87 data: 03/07/2014 14:25:55

    Ciao
    Prova questo, da collegare ad un pulsante
     
    k = Range("b" & Rows.Count).End(xlUp).Row
    j = Range("c" & Rows.Count).End(xlUp).Row + 1
    For i = j To k
        Set fin = Sheets("TIT").Columns(4).Find(what:=Cells(i, 2), lookat:=xlWhole)
        If Not fin Is Nothing Then
            Range(Cells(i, 3), Cells(i, 8)) = Sheets("TIT").Range(Sheets("TIT").Cells(fin.Row, 68), Sheets("TIT").Cells(fin.Row, 73)).Value
        End If
    Next
    Application.ScreenUpdating = True



  • di Fabio (utente non iscritto) data: 03/07/2014 15:10:30

    E' perfetto
    Ora cercerò di adattarlo anche per altri fogli.
    Penso (e spero) di riuscirci, altrimenti ti disturbo ancora.
    Grazie mille.



  • di Grograman (utente non iscritto) data: 04/07/2014 15:37:29

    Scusate l'intromissione!

    Cit: "Le righe in cui vado a copiare sono diverse (dalle 3 mila alle 10 mila) e questo rallenta moltissimo la macro."

    Trucchetto:
     
    Application.Calculation = xlCalculationManual
    
    '''faccio quello che devo fare
    
    Application.Calculation = xlCalculationAutomatic
    Application.Calculate



  • di Fabio (utente non iscritto) data: 04/07/2014 15:47:05

    questa soluzione l'ho già provata ma, mentre è veloce nella copia delle formule, poi e lentissimo quando ricalcola con il sistema automatico.
    Grazie comunque del suggerimento.