Risultati da 1 a 7 di 7

Discussione: Trasferire dati automaticamente su due fogli diversi



  1. #1
    Dilly
    Ospite L'avatar di Dilly

    Trasferire dati automaticamente su due fogli diversi

    Buongiorno ragazzi,
    premetto che prima di postare ho cercato nel forum se si parlava di questo tema, ed effettivamente ci sono vari post riferiti al mio quesito. Il fatto è che sono tutti moooolto più complessi del mio e non ho capito niente.
    Io vorrei solamente che alcuni dati del file "Origine" venissero copiati automaticamente nel file "Destinazione" (dove a sua volta verranno elaborati già con formule per creare grafici ..ecc ecc ma di questo poi me ne occupo io)


    Nel file "Origine" i due dati da pescare sono di una somma fatta su una cella composta da 6 celle unite, mentre la cella del file "Destinazione" è una cella pulita è semplice.


    Non posso utilizzare lo stesso file perchè avendo più animali il file mi diventa troppo pesante e per una questione pratica me ne servono due.
    Un paio di domande...


    Una volta messa la formula, i due file devono essere aperti entrambi per fare in modo di aggiornarsi?
    Bastano formule o è necessaria una macro (preferirei formula se possibile)

    Grazie
    File Allegati File Allegati
    Ultima modifica fatta da:Canapone; 10/07/17 alle 16:06

  2. #2
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1652
    Versione Office
    2010 PC
    Likes ricevuti
    889
    Likes dati
    183

    Re: Trasferire dati automaticamente su due fogli diversi

    ciao

    Il consiglio è quello di mettere tutto in un file con cartelle diverse!!
    Il file ti diventa pesante perchè applichi la formattazione (colori, sfondi, griglie ecc.) a milioni di celle, senza che ve ne sia bisogno.

    al di là dei consigli, se ricordo bene la funzione MATR.SOMMA.PRODOTTO() funziona anche con file chiusi, pertanto:
    per le quantità:
    =MATR.SOMMA.PRODOTTO(('[Origine Dieta.xlsx]Oscar'!$A$4:$A$21=$C6)*'[Origine Dieta.xlsx]Oscar'!$W$4:$W$21)
    per le calorie:
    =MATR.SOMMA.PRODOTTO(('[Origine Dieta.xlsx]Oscar'!$A$4:$A$21=$C6)*'[Origine Dieta.xlsx]Oscar'!$X$4:$X$21)
    ovviamente in riga 6 della colonna del nome corrispondente al foglio.
    le date devono corrispondere (al momento sono di anni diversi)
    "So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")

  3. #3

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2807
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    978

    Re: Trasferire dati automaticamente su due fogli diversi

    Come dice @ninai, che saluto, c'è qualche incongruenza.
    Nel foglio di destinazione la data dove hai segnato i valori è sbagliata (infatti si riferisce al 2016 mentre il file di origine è 2015), mentre la data a cui ti riferisci e nella riga 371.
    Poi è sbagliato anche il riferimento del nome del pesce, infatti sul file di origine risulta "Sofia" (cella A1) mentre sul file di destinazione trascrivi i valori nella colonna riferita a "Blue".
    Suppongo (ma potrei sbagliare) che ogni file di origine si riferisca ad orni pesce in intestazione del file di destinazione.
    Infine, ho scritto questa routine che funziona per ogni file di origine (bisogna richiamarlo manualmente) e per ogni pesce, sempre che la struttura dei file sia uguale.
    Codice: 
    Option Explicit
    Option Compare Text
    
    
    Sub Aggiorna()
    Dim myFile As String
    Dim wksDest As Workbook
    Dim wksOrig As Workbook
    Dim shDest As Worksheet
    Dim shOrig As Worksheet
    Dim iCol As Integer
    Dim Nome As String
    Dim uRiga As Long
    Dim iOrig As Long
    Dim iDest As Long
    Dim myData As Date
    
    
    myFile = Application.GetOpenFilename(filefilter:="Cartella di lavoro di Excel,*.xlsx", Title:="Importa i dati dal file...")
    If myFile = "Falso" Then Exit Sub
    
    
    Set wksDest = ThisWorkbook
    Set shDest = Sheets("2015") 'adattare il nome del foglio se si hanno più fogli
    
    
    Set wksOrig = Workbooks.Open(myFile)
    Set shOrig = wksOrig.Sheets(1)
    
    
    Nome = shOrig.Range("A1")
    
    
    iCol = 4
    Do Until shDest.Cells(5, iCol) = Nome
        If shDest.Cells(5, iCol) = "" Then
            MsgBox "Nome non trovato del file di Destinazione", vbInformation + vbOKOnly, "ATTENZIONE"
            wksOrig.Close
            Exit Sub
        End If
        iCol = iCol + 1
    Loop
    
    
    uRiga = shOrig.Cells(Rows.Count, 1).End(xlUp).Row
    For iOrig = 4 To uRiga Step 6
        myData = shOrig.Cells(iOrig, 1)
        iDest = 6
        Do Until shDest.Cells(iDest, 3) = myData
            If shDest.Cells(iDest, 3) = "" Then
                MsgBox "Data non trovato del file di Destinazione", vbInformation + vbOKOnly, "ATTENZIONE"
                wksOrig.Close
                Exit Sub
            End If
            iDest = iDest + 1
        Loop
        shDest.Cells(iDest, iCol) = shOrig.Cells(iOrig, 23)
        shDest.Cells(iDest, iCol + 1) = shOrig.Cells(iOrig, 24)
    Next
    
    
    wksOrig.Close savechanges:=False
    MsgBox "File destinazione aggiornato correttamente", vbInformation + vbOKOnly, "Aggiornamento"
    
    
    End Sub

  4. #4
    Dilly
    Ospite L'avatar di Dilly

    Re: Trasferire dati automaticamente su due fogli diversi

    Citazione Originariamente Scritto da ninai Visualizza Messaggio
    ciao

    Il consiglio è quello di mettere tutto in un file con cartelle diverse!!
    Il file ti diventa pesante perchè applichi la formattazione (colori, sfondi, griglie ecc.) a milioni di celle, senza che ve ne sia bisogno.
    Hai ragione per quanto riguarda la formattazione, e alla fine è il dato e il risultato che conta.
    Se ti dico che non riesco a lavorare bene in un foglio "nudo" penserai che sono stupida, ma è così.
    E' vero che potrei limitarmi e su questo starò più attenta.

    Citazione Originariamente Scritto da ninai Visualizza Messaggio
    al di là dei consigli, se ricordo bene la funzione MATR.SOMMA.PRODOTTO() funziona anche con file chiusi, pertanto:
    per le quantità:
    =MATR.SOMMA.PRODOTTO(('[Origine Dieta.xlsx]Oscar'!$A$4:$A$21=$C6)*'[Origine Dieta.xlsx]Oscar'!$W$4:$W$21)
    per le calorie:
    =MATR.SOMMA.PRODOTTO(('[Origine Dieta.xlsx]Oscar'!$A$4:$A$21=$C6)*'[Origine Dieta.xlsx]Oscar'!$X$4:$X$21)
    ovviamente in riga 6 della colonna del nome corrispondente al foglio.
    le date devono corrispondere (al momento sono di anni diversi)
    Lo proverò subito e ti dirò.
    Come sempre, per il momento, non posso fare altro che ringraziarti.
    A più tardi

  5. #5
    Dilly
    Ospite L'avatar di Dilly

    Re: Trasferire dati automaticamente su due fogli diversi

    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Come dice @ninai, che saluto, c'è qualche incongruenza.
    Nel foglio di destinazione la data dove hai segnato i valori è sbagliata (infatti si riferisce al 2016 mentre il file di origine è 2015), mentre la data a cui ti riferisci e nella riga 371.
    Poi è sbagliato anche il riferimento del nome del pesce, infatti sul file di origine risulta "Sofia" (cella A1) mentre sul file di destinazione trascrivi i valori nella colonna riferita a "Blue".
    Suppongo (ma potrei sbagliare) che ogni file di origine si riferisca ad orni pesce in intestazione del file di destinazione.
    Buongiorno Rubik!
    Scusate ragazzi, si, nella fretta ho preparato due file con date diverse e nomi degli animali diversi. Sorry!
    Logicamente le date coincideranno e anche gli animali.

    Nel file (ORIGINE) ho 10 animali con 10 fogli differenti dove c'è tutta la dieta e alla fine nell'ultimo foglio vi sono grafici di tutti e 10.
    Nell'altro file (DESTINAZIONE) diciamo che c'è un riassunto della dieta di tutti, varie medie, consumo del pesce totale con relativi costi per mostrare all'azienda i paragoni degli anni anteriori....ecc ecc.

    Devo fare due file diversi perché diciamo che l' ORIGINE è per noi che lavoriamo direttamente con gli animali, mentre l'altro è più "d'ufficio"...chiamiamolo così.
    Comunque ora proverò le formule di Ninai e cercherò di capire anche quello che hai fatto tu Rubik.
    Non sono pratica di codici ma voglio capire.

    Studio e vi aggiorno.
    Per il momento grazie mille!

  6. #6

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2807
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    978

    Re: Trasferire dati automaticamente su due fogli diversi

    Se il file ORIGINE è formato da più fogli allora conviene fare un ciclo che scansioni ogni singolo foglio. Routine modificata con qualche commento:
    Codice: 
    Option Explicit
    Option Compare Text
    
    
    Sub Aggiorna()
    Dim myFile As String
    Dim shDest As Worksheet
    Dim wksOrig As Workbook
    Dim shOrig As Worksheet
    Dim iCol As Integer
    Dim Nome As String
    Dim uRiga As Long
    Dim iOrig As Long
    Dim iDest As Long
    Dim myData As Date
    
    
    myFile = Application.GetOpenFilename(filefilter:="Cartella di lavoro di Excel,*.xlsx", Title:="Importa i dati dal file...")
    If myFile = "Falso" Then Exit Sub
    
    
    Set shDest = Sheets("2015") 'adattare il nome del foglio se si hanno più fogli
    
    
    Set wksOrig = Workbooks.Open(myFile)
    
    
    For Each shOrig In wksOrig.Worksheets
        Nome = shOrig.Range("A1")
    
    
        iCol = 4
        'cerca il nome corrispondente nel file Destinazione
        Do Until shDest.Cells(5, iCol) = Nome
            If shDest.Cells(5, iCol) = "" Then
                MsgBox Nome & " non trovato del file di Destinazione", vbInformation + vbOKOnly, "ATTENZIONE"
                GoTo Successivo
            End If
            iCol = iCol + 1
        Loop
    
    
        'cerca l'ultima riga del file Origine
        uRiga = shOrig.Cells(Rows.Count, 1).End(xlUp).Row
        
        'inizia il ciclo nel file Origine
        For iOrig = 4 To uRiga Step 6
            myData = shOrig.Cells(iOrig, 1)
            iDest = 6
            'confronta la data del file Origine nel file Destinazione
            Do Until shDest.Cells(iDest, 3) = myData
                If shDest.Cells(iDest, 3) = "" Then
                    MsgBox myData & " non trovato del file di Destinazione", vbInformation + vbOKOnly, "ATTENZIONE"
                    GoTo Successivo
                End If
                iDest = iDest + 1
            Loop
            'scrive i valori trovati nel file Destinazione
            shDest.Cells(iDest, iCol) = shOrig.Cells(iOrig, 23)
            shDest.Cells(iDest, iCol + 1) = shOrig.Cells(iOrig, 24)
        Next
    Successivo:
    Next
    
    
    wksOrig.Close savechanges:=False
    MsgBox "File destinazione aggiornato correttamente", vbInformation + vbOKOnly, "Aggiornamento"
    
    
    Set shDest = Nothing
    Set wksOrig = Nothing
    Set shOrig = Nothing
    
    
    End Sub

  7. #7
    Dilly
    Ospite L'avatar di Dilly

    Re: Trasferire dati automaticamente su due fogli diversi

    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Se il file ORIGINE è formato da più fogli allora conviene fare un ciclo che scansioni ogni singolo foglio. Routine modificata con qualche commento:
    Codice: 
    Option Explicit
    Option Compare Text
    
    
    Sub Aggiorna()
    Dim myFile As String
    Dim shDest As Worksheet
    Dim wksOrig As Workbook
    Dim shOrig As Worksheet
    Dim iCol As Integer
    Dim Nome As String
    Dim uRiga As Long
    Dim iOrig As Long
    Dim iDest As Long
    Dim myData As Date
    
    
    myFile = Application.GetOpenFilename(filefilter:="Cartella di lavoro di Excel,*.xlsx", Title:="Importa i dati dal file...")
    If myFile = "Falso" Then Exit Sub
    
    
    Set shDest = Sheets("2015") 'adattare il nome del foglio se si hanno più fogli
    
    
    Set wksOrig = Workbooks.Open(myFile)
    
    
    For Each shOrig In wksOrig.Worksheets
        Nome = shOrig.Range("A1")
    
    
        iCol = 4
        'cerca il nome corrispondente nel file Destinazione
        Do Until shDest.Cells(5, iCol) = Nome
            If shDest.Cells(5, iCol) = "" Then
                MsgBox Nome & " non trovato del file di Destinazione", vbInformation + vbOKOnly, "ATTENZIONE"
                GoTo Successivo
            End If
            iCol = iCol + 1
        Loop
    
    
        'cerca l'ultima riga del file Origine
        uRiga = shOrig.Cells(Rows.Count, 1).End(xlUp).Row
        
        'inizia il ciclo nel file Origine
        For iOrig = 4 To uRiga Step 6
            myData = shOrig.Cells(iOrig, 1)
            iDest = 6
            'confronta la data del file Origine nel file Destinazione
            Do Until shDest.Cells(iDest, 3) = myData
                If shDest.Cells(iDest, 3) = "" Then
                    MsgBox myData & " non trovato del file di Destinazione", vbInformation + vbOKOnly, "ATTENZIONE"
                    GoTo Successivo
                End If
                iDest = iDest + 1
            Loop
            'scrive i valori trovati nel file Destinazione
            shDest.Cells(iDest, iCol) = shOrig.Cells(iOrig, 23)
            shDest.Cells(iDest, iCol + 1) = shOrig.Cells(iOrig, 24)
        Next
    Successivo:
    Next
    
    
    wksOrig.Close savechanges:=False
    MsgBox "File destinazione aggiornato correttamente", vbInformation + vbOKOnly, "Aggiornamento"
    
    
    Set shDest = Nothing
    Set wksOrig = Nothing
    Set shOrig = Nothing
    
    
    End Sub
    Grazie mille Rubik... Effettivamente si , devo farlo per i 10 animali/10 fogli del file ORIGINE.
    Provo a copiare quel che hai fatto e ti dico (ho pochi dati e se tardo a rispondere è perché devo aspettare inizio mese)
    Intanto provo.... GRAZIE!!!

Discussioni Simili

  1. Aggregare dati da fogli diversi
    Di Andrea19 nel forum Domande su Excel in generale
    Risposte: 3
    Ultimo Messaggio: 19/02/17, 16:40
  2. Riepilogo dati da fogli excel diversi
    Di desci80 nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 23/01/17, 19:47
  3. [Risolto] Accodare dati diversi da più fogli in più file
    Di aribuz nel forum Domande su Excel VBA e MACRO
    Risposte: 13
    Ultimo Messaggio: 20/10/16, 09:05
  4. computo xls e richiamo dati da fogli diversi
    Di Piove nel forum Domande su Excel in generale
    Risposte: 3
    Ultimo Messaggio: 20/09/16, 15:11
  5. Convalida dati da due fogli diversi
    Di Vincenzo Damiani nel forum Domande su Excel in generale
    Risposte: 10
    Ultimo Messaggio: 05/09/15, 10:16

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •