accorpamento dati



  • accorpamento dati
    di antofus data: 05/10/2014 23:43:49

    Lo scenario è questo.
    Lavoro in un ufficio in cui ho necessità frequente di accorpare i dati provenienti da sedi distaccate che chiaramente utilizzano tutte lo stesso format per ogni situazione.
    Per ogni esigenza cambierà per tutte il format di volta in volta.

    Ho provato con il consolidamento dati ma è molto laborioso aggiungere tutti i riferimenti (intervalli) che mi servono
    Allora avevo pensato a questo.
    Con una macro, che ho già trovato in rete, copio tutti i fogli dei file salvati in una cartella, in uno solo, uno dopo l'altro.

    Servirebbe, adesso, una macro che:
    Esplora lo stesso Range (p.e. B1:N50) di tutti i fogli e copia nel primo le celle che contengono testo(sarebbero le etichette dei vari intervalli) e somma le celle che contengono numeri.

    Facile no!

    Qui ho risolto un sacco di problemi negli ultimi giorni, che mi consentono maggiore efficienza nel mio ambiente di lavoro, sono sicuro che potete fare anche questo.
    Grazie



  • di lepat (utente non iscritto) data: 06/10/2014 11:28:03

    se sei pratico del forum dovresti sapere che è meglio allegare un file di esempio con anche il risultato desiderato



  • di antofus data: 06/10/2014 15:40:28

    È vero, sono nuovo.
    Però non credo serva un allegato e forse non ho ben esplicitato le mie esigenze.
    Il file, , infatti può essere diverso ogni volta.
    Per questo avevo parlato di esplorazione.
    Una macro che controlla il range, copia sul foglio nr. 1 i valori testo e somma sempre sul foglio 1 valori numerici degli altri fogli.
    In A1 del.primo foglio la somma di tutte le celle A1 dei restanti fogli se il valore in esse è un numero, altrimenti copia.



  • di antofus (utente non iscritto) data: 11/10/2014 16:07:09

    Se è proprio necessario posso allegare i file.
    però l'esigenza è quella di sommare i dati da più fogli senza sapere qual è il range da cui prelevare i dati
    ci vogliamo provare?



  • di antofus data: 11/10/2014 16:21:02

    Il codice dovrebbe tradurre la formula che indico di seguito e che fa esattamente quello che voglio
    Ora continuo a provare a copiare la formula in tutte le celle
     
    =SE(VAL.NUMERO(Foglio2!A1);SOMMA(Foglio2:Foglio4!A1);Foglio2!A1)



  • di antofus (utente non iscritto) data: 12/10/2014 22:54:07

    Proseguendo nello studio ho realizzato questa formula che fa quello che mi serve.
    io ho il primo foglio in cui devo sommare i dati e 10 fogli successivi in cui ci sono i dati di origine.
    questa formula è inserita in ogni cella del foglio1
    nella cella A1 del foglio 1 controllo la corrispondente cella dei restanti: se c'è un valore numerico in uno dei fogli dopo il primo allora la cella A1 del foglio 1 somma i dati; diversamente se c'è del testo mette il valore della corrispondente cella del foglio 2. (tutti i fogli origine sono uguali).

    Adesso per evitare cancellazioni casuali, vorrei inserire con VBA questa formula in ogni cella.
    Il problema che il riferimento A1 deve cambiare per ogni cella del range in cui voglio inserire la formula

    con il codice a seguito (inserisciformula) mi inserisce la stringa in tutte le celle ma tutte uguali cioè sempre con A1

    AIUTO
    GRAZIE
     
    =SE(O(VAL.NUMERO(FOGLIO2!A1);VAL.NUMERO(FOGLIO3!A1);VAL.NUMERO(FOGLIO4!A1);VAL.NUMERO(FOGLIO5!A1);VAL.NUMERO(FOGLIO6!A1);VAL.NUMERO(FOGLIO7!A1);VAL.NUMERO(FOGLIO8!A1);VAL.NUMERO(FOGLIO9!A1);VAL.NUMERO(FOGLIO10!A1);VAL.NUMERO(FOGLIO11!A1));SOMMA(FOGLIO2:FOGLIO11!A1);SE(FOGLIO2!A1="";"";FOGLIO2!A1))
    
    
    Sub inserisciformula()
    Dim Intervallo As Range
    Dim stringa As String
    stringa = "miaformula" ' la formula è quella di sopra
    Set Intervallo = Range("A1:R150").FormulaLocal
    Intervallo.Value = stringa
    End Sub
    



  • di antofus (utente non iscritto) data: 12/10/2014 23:07:53

    Questo sta diventando un monothread

    Non c'è niente da fare. Excel è molto più avanti di me
    cassate il mio precedente post. tanto automaticamente calcola il valore della cella: cioè la formula si aggiorna se sta nella cella a1 i riferimenti sono a1, se sta nella cella b1 i riferimenti sono b1 etc...
    ok
    il problema è un altro ora.
    anche se la stringa della formula è corretta, i due apici "" vengono trasformati in uno solo".
    la parte SE(foglio2!A1="";""; viene trasformata in SE(TNZERC!A1=";";

    ed ora??????



  • di antofus (utente non iscritto) data: 12/10/2014 23:10:00

    la parte SE(foglio2!A1="";""; viene trasformata in SE(foglio2!A1=";";

    e inoltre il codice è il seguente
    e la variabile stringa contiene la formula
     
    Range("A1:R150").FormulaLocal = stringa



  • di Zer0Kelvin data: 12/10/2014 23:14:00

    Ciao.
    Ci.:
    _______________________________________________________________________________________________
    con il codice a seguito (inserisciformula) mi inserisce la stringa in tutte le celle ma tutte uguali cioè sempre con A1
    _______________________________________________________________________________________________
    Non credo proprio, il codice che hai allegato si arresterebbe con un errore "Necessario oggetto" alla riga
    Set Intervallo = Range("A1:R150").FormulaLocal
    dal momento che questa istruzione tenta di assegnare una matrice ad un oggetto.
    Prova così
     
    Sub inserisciformula()
        Range("A1:R150").FormulaLocal = "=miaformula"
    End Sub
    



  • di Zer0Kelvin data: 12/10/2014 23:16:31

    Ok, vedo che nel frattempo hai risolto da solo.



  • di Zer0Kelvin data: 12/10/2014 23:24:09

    PS: se hai bisogno dei doppi apici devi scrivere
     
    foglio2!A1="""";"""";