Inserimento automatico dei dati in fogli diversi

Anonimo
2023-01-18T11:45:29+00:00

Ciao a tutti,

Vorrei sapere se è possibile fare in modo che quando si inseriscono dati in un foglio, questi vengano automaticamente inseriti in un altro foglio.

Per esempio:

Nel foglio "Generale" ho tutte le prenotazioni.

Gli altri fogli sono i nomi di coloro che hanno effettuato le prenotazioni.

Voglio che quando inserisco un nuovo foglio con una nuova persona e inserisco i dati lì, gli stessi dati vengano inseriti automaticamente nel foglio "Generale", in base alla data.

Grazie!

PS. Di seguito il link per scaricare il file excel in questione:

https://docs.google.com/spreadsheets/d/1G-ljTDLjPm9rUnad8vtH6ykyk3EtmJCH/edit?usp=sharing&ouid=109796831966118151198&rtpof=true&sd=true

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

16 risposte

Ordina per: Più utili
  1. Anonimo
    2023-01-18T17:14:09+00:00

    Ciao Luciano,

    Nonostante abbia fatto ciò che mi hai detto non funziona, non fa nulla, come se non fosse inserito nulla

    A me il codice funziona senza alcun problema.

    Il codice risponde, automaticamente, all'inserimento di una data nella colonna D di uno qualsiasi dei fogli, ad eccezione del foglio Generale. Il codice controlla che sia stata inserita una data anche nella colonna A e quindi aggiorna il foglio Generale.

    Per verificare l'esecuzione del codice cancella i dati delle colonne B:E della riga 10 del foglio Generale e poi reinserisci la data nella cella D3 del foglio Esposito. Dovresti quindi vedere i dati del foglio Esposito copiati nel foglio Generale.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-01-18T17:02:03+00:00

    Ciao Luciano,

    Vorrei sapere se è possibile fare in modo che quando si inseriscono dati in un foglio, questi vengano automaticamente inseriti in un altro foglio.

    Per esempio:

    Nel foglio "Generale" ho tutte le prenotazioni.

    Gli altri fogli sono i nomi di coloro che hanno effettuato le prenotazioni.

    Voglio che quando inserisco un nuovo foglio con una nuova persona e inserisco i dati lì, gli stessi dati vengano inseriti automaticamente nel foglio "Generale", in base alla data.

    PS. Di seguito il link per scaricare il file excel in questione:

    https://docs.google.com/spreadsheets/d/1G-ljTDLjPm9rUnad8vtH6ykyk3EtmJCH/edit?usp=sharing&ouid=109796831966118151198&rtpof=true&sd=true

    In attesa di ulteriori informazioni, prova qualcosa del genere:

    • Alt+F11 per aprire l'editor di VBA
    • Ctrl+R per accedere alla finestra Project Explorer ('Gestione progetti')
    • Fai doppio clic sul modulo ThisWorkbook (Questa_cartella_di_Lavoro) del file e incolla il seguente codice:

    '========>>

    Option Explicit

    '-------->>

    Private Sub Workbook_SheetChange(ByVal SH As Object, ByVal Target As Range)

    Dim destSH As Worksheet

    Dim Rng As Range, srcRng As Range, destRng As Range

    Dim dDate As Date

    Const sFoglio_Generale As String = "Generale"

    If SH.Name = sFoglio_Generale Then Exit Sub

    Set Rng = Intersect(Target, SH.Columns("D"))

    If Not Rng Is Nothing Then

    If Not IsDate(Rng.Cells(1).Offset(, -3)) Then Exit Sub

    Set srcRng = Rng.Offset(, -3).Resize(4)

    Set destSH = ThisWorkbook.Sheets(sFoglio_Generale)

    dDate = DateValue(srcRng.Cells(1).Value)

    Set destRng = destSH.UsedRange.Find(What:=dDate, After:=ActiveCell, LookIn:=xlFormulas, LookAt _

    :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _

    False, SearchFormat:=False)

    With destRng

    If IsEmpty(.Cells(1, 2)) Then

    .Cells(1, 2).Value = srcRng.Cells(1, 2).Value

    .Cells(1, 3).Value = srcRng.Cells(1, 3).Value

    .Cells(1, 4).Value = SH.Name

    .Cells(1, 5).Value = srcRng.Cells(1, 4).Value

    Else

    Call MsgBox(Prompt:="la data " & dDate & " è già presa", _

    Buttons:=vbCritical, _

    Title:="REPORT")

    Exit Sub

    End If

    End With

    End If

    End Sub

    '<<========

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel
    • Salva il file con l'estensione xlsm.

    Potresti scaricarte il mio file di prova Luciano20230118.xlsm

    A causa di un problema con l'attuale editor del forum, che inserisce righe vuote indesiderate nel codice copiato dal forum, suggerirei di copiare il mio codice direttamente dal mio file di prova.

    ===

    Regards,

    Norman

    Immagine

    Nonostante abbia fatto ciò che mi hai detto non funziona, non fa nulla, come se non fosse inserito nulla

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-01-18T16:57:27+00:00

    Ciao sono Leon. Credo che un modo per farlo sia usare la funzione =CERCA.VERT() e la funzione =SE(). Nel foglio "Generale", crea una colonna con la data della prenotazione. Negli altri fogli, crea una colonna simile con la data della prenotazione. Nel foglio "Generale", utilizzare la funzione =CERCA.VERT() per estrarre i dati dagli altri fogli in base alla data della prenotazione. Ad esempio, nella cella A2 del foglio "Generale": =CERCA.VERT(B2; Foglio2! A:D, 2, VERO) In questo modo i dati verranno estratti dalla cella B2 del Foglio2 nella cella A2 del foglio "Generale". Utilizzare la funzione =IF() per verificare se la cella è vuota, in modo che i nuovi dati non vengano sovrascritti. Ad esempio, nella cella A2 del foglio "Generale": =SE(VAL.VUOTO(A2); CERCA.VERT(B2; Foglio2! A:D, 2, VERO), A2) Questo controllerà se la cella è vuota, se lo è estrarrà i dati, altrimenti lascerà i dati così come sono. È possibile ripetere questo processo per ogni colonna di dati che si desidera trasferire e per tutti i fogli necessari. Nota: questo metodo funziona solo per i dati immessi nello stesso intervallo di celle nel foglio di origine e nel foglio di destinazione.

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    Grazie ma non ha risolto il mio problema, perché tutte le date del mese ci devono essere sempre sul foglio generale, poi quando sugli altri fogli inserisco una data, automaticamente affianco alla data di generale devono comparire quei dati

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2023-01-18T16:00:01+00:00

    Ciao Luciano,

    Vorrei sapere se è possibile fare in modo che quando si inseriscono dati in un foglio, questi vengano automaticamente inseriti in un altro foglio.

    Per esempio:

    Nel foglio "Generale" ho tutte le prenotazioni.

    Gli altri fogli sono i nomi di coloro che hanno effettuato le prenotazioni.

    Voglio che quando inserisco un nuovo foglio con una nuova persona e inserisco i dati lì, gli stessi dati vengano inseriti automaticamente nel foglio "Generale", in base alla data.

    PS. Di seguito il link per scaricare il file excel in questione:

    https://docs.google.com/spreadsheets/d/1G-ljTDLjPm9rUnad8vtH6ykyk3EtmJCH/edit?usp=sharing&ouid=109796831966118151198&rtpof=true&sd=true

    In attesa di ulteriori informazioni, prova qualcosa del genere:

    • Alt+F11 per aprire l'editor di VBA
    • Ctrl+R per accedere alla finestra Project Explorer ('Gestione progetti')
    • Fai doppio clic sul modulo ThisWorkbook (Questa_cartella_di_Lavoro) del file e incolla il seguente codice:

    '========>>

    Option Explicit

    '-------->>

    Private Sub Workbook_SheetChange(ByVal SH As Object, ByVal Target As Range)

    Dim destSH As Worksheet 
    
    Dim Rng As Range, srcRng As Range, destRng As Range 
    
    Dim dDate As Date 
    
    Const sFoglio\_Generale As String = "Generale" 
    
    If SH.Name = sFoglio\_Generale Then Exit Sub 
    
    Set Rng = Intersect(Target, SH.Columns("D")) 
    
    If Not Rng Is Nothing Then 
    
        If Not IsDate(Rng.Cells(1).Offset(, -3)) Then Exit Sub 
    
        Set srcRng = Rng.Offset(, -3).Resize(4) 
    
        Set destSH = ThisWorkbook.Sheets(sFoglio\_Generale) 
    
        dDate = DateValue(srcRng.Cells(1).Value) 
    
        Set destRng = destSH.UsedRange.Find(What:=dDate, After:=ActiveCell, LookIn:=xlFormulas, LookAt \_ 
    
            :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= \_ 
    
            False, SearchFormat:=False) 
    
        With destRng 
    
        If IsEmpty(.Cells(1, 2)) Then 
    
            .Cells(1, 2).Value = srcRng.Cells(1, 2).Value 
    
            .Cells(1, 3).Value = srcRng.Cells(1, 3).Value 
    
            .Cells(1, 4).Value = SH.Name 
    
            .Cells(1, 5).Value = srcRng.Cells(1, 4).Value 
    
            Else 
    
                Call MsgBox(Prompt:="la data " & dDate & " è già presa", \_ 
    
                Buttons:=vbCritical, \_ 
    
                Title:="REPORT") 
    
                Exit Sub 
    
            End If 
    
        End With 
    
    End If 
    

    End Sub

    '<<========

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel
    • Salva il file con l'estensione xlsm.

    Potresti scaricarte il mio file di prova Luciano20230118.xlsm

    A causa di un problema con l'attuale editor del forum, che inserisce righe vuote indesiderate nel codice copiato dal forum, suggerirei di copiare il mio codice direttamente dal mio file di prova.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2023-01-18T15:46:43+00:00

    Ciao sono Leon.

    Credo che un modo per farlo sia usare la funzione =CERCA.VERT() e la funzione =SE().

    Nel foglio "Generale", crea una colonna con la data della prenotazione. Negli altri fogli, crea una colonna simile con la data della prenotazione. Nel foglio "Generale", utilizzare la funzione =CERCA.VERT() per estrarre i dati dagli altri fogli in base alla data della prenotazione. Ad esempio, nella cella A2 del foglio "Generale": =CERCA.VERT(B2; Foglio2! A:D, 2, VERO) In questo modo i dati verranno estratti dalla cella B2 del Foglio2 nella cella A2 del foglio "Generale".

    Utilizzare la funzione =IF() per verificare se la cella è vuota, in modo che i nuovi dati non vengano sovrascritti. Ad esempio, nella cella A2 del foglio "Generale": =SE(VAL.VUOTO(A2); CERCA.VERT(B2; Foglio2! A:D, 2, VERO), A2) Questo controllerà se la cella è vuota, se lo è estrarrà i dati, altrimenti lascerà i dati così come sono.

    È possibile ripetere questo processo per ogni colonna di dati che si desidera trasferire e per tutti i fogli necessari.

    Nota: questo metodo funziona solo per i dati immessi nello stesso intervallo di celle nel foglio di origine e nel foglio di destinazione.

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    La risposta è stata utile?

    0 commenti Nessun commento