Creare una relazione bilaterale tra due celle in fogli differenti

Anonimo
2016-01-14T14:10:23+00:00

Gentile Community,

ho un problema che non riesco a risolvere, eppure mi sembra molto semplice.

Nel foglio 1 ho una colonna di dati da A1:A5 e nel foglio 2 ho la stessa colonna di dati da A1:A5.

Voglio fare in modo che se modifico i dati nel Foglio 1, questi vengano modificati anche nel Foglio 2 e VICEVERSA.

Tuttavia fino ad ora ho incontrato relazioni solo unilaterali, che se modifico i dati nel foglio 1, questi si modificano anche nel foglio 2, poichè la formula del foglio 2 è =Foglio1!(A1:A5). Ma chiaramente il reciproco non avviene, cioè se modifico i dati nel Foglio 2, quelli del Foglio 1 rimangono invariati.

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
Risposta accettata dall'autore della domanda
Anonimo
2016-01-14T15:03:06+00:00

Ciao Angelo,

ho un problema che non riesco a risolvere, eppure mi sembra molto semplice.

Nel foglio 1 ho una colonna di dati da A1:A5 e nel foglio 2 ho la stessa colonna di dati da A1:A5.

Voglio fare in modo che se modifico i dati nel Foglio 1, questi vengano modificati anche nel Foglio 2 e VICEVERSA.

Tuttavia fino ad ora ho incontrato relazioni solo unilaterali, che se modifico i dati nel foglio 1, questi si modificano anche nel foglio 2, poichè la formula del foglio 2 è =Foglio1!(A1:A5). Ma chiaramente il reciproco non avviene, cioè se modifico i dati nel Foglio 2, quelli del Foglio 1 rimangono invariati.

Credo che la funzionalità voluta richieda l'uso di VBA.

Quindi, 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 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, Rng2 As Range

    Dim destRng As Range

    Const sIntervallo As String = "A1:A5"                          '<<=== Modifica

    Const sPrimoFoglio As String = "Foglio1"                    '<<=== Modifica

    Const sSecondoFoglio As String = "Foglio2"                '<<=== Modifica

    With ThisWorkbook

        If Sh.Name = sPrimoFoglio Then

            Set destSH = .Sheets(sSecondoFoglio)

        ElseIf Sh.Name = sSecondoFoglio Then

            Set destSH = .Sheets(sPrimoFoglio)

        Else

           Exit Sub

        End If

    End With

    With Sh

        Set Rng = .Range(sIntervallo)

        Set Rng2 = Intersect(Target, Rng)

    End With

    If Not Rng2 Is Nothing Then

        On Error GoTo XIT

        Application.EnableEvents = False

        Set destRng = destSH.Range(Rng2.Address)

        destRng.Value = Rng2.Value

    End If

XIT:

    Application.EnableEvents = True

End Sub

'<<=========

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

Potresti scaricare il mio file di prova Angelo20160114.xlsm a:

                   **http://1drv.ms/1ZxxS8z**

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-01-14T16:27:41+00:00

    Ciao Angelo,

    ho scaricato il file di prova ed è proprio quello che intendevo!!

    Bene! Quindi, per chiudere questo thread, vorrei chiederti gentilmente di contrasegnare la mia risposta come Risposta preferita. In questo modo, tu aiuterai anche coloro che potessero cercare soluzioni ai problemi simili negli archivi della Community.

    (purtroppo speravo esistesse un comando più semplice, anche, per chi come me, ha una conoscenza base del programma, ma invece non è così.)

    Per quanto ne so io, credo non ci sia una soluzione del genere, ma in questa Community ci sono persone dotate e ingegnose!

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-01-14T15:52:59+00:00

    Grazie Mille,

    ho scaricato il file di prova ed è proprio quello che intendevo!!

    (purtroppo speravo esistesse un comando più semplice, anche, per chi come me, ha una conoscenza base del programma, ma invece non è così.)

    La risposta è stata utile?

    0 commenti Nessun commento