Condividi tramite

Funzione "Ordina" con foglio di lavoro diversi

Anonimo
2020-08-31T20:31:43+00:00

Salve, ho un file excel con tre fogli di lavoro.

In tutti e tre ho le colonne 1 e 2 identiche, le altre colonne variano ad ogni foglio.

Quando faccio degli inserimenti di dati nel foglio 1 nelle colonne 1 e 2  i dati vengono inseriti automaticamente anche nel foglio 2 e 3. Quando però uso la funzione "ordina"  questa viene effettuata solo sul foglio 1 (anche se evidenzio tutti i tre fogli di lavoro) e così i dati variabili dei fogli  2 e  3 non vengono ordinati e quindi non corrispondono più alla colonna 1 e 2 che invece vengono comunque ordinate in tutti i tre fogli di lavoro

C'è una soluzione a questo problema?

Grazie

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

6 risposte

Ordina per: Più utili
  1. Anonimo
    2020-09-03T19:42:40+00:00

    Ciao Chiara,

    ho usato la formula =Foglio1!A2 inserita nella colonna A2 del Foglio 1.

    Con Excel sono alle prime armi, abbiate pazienza....

    Per raggiungere il tuo obiettivo prova a sostituire le formule su Foglio2 con i valori corrispondenti e poi prova qualcosa del genere:

    • Fai clic dx sulla linguetta del Foglio1
    • Seleziona l'opzione Visualizza Codice dal **** menu contestuale risultante
    • Incolla il seguente codice:

    '========>>

    Option Explicit

    '-------->>

    Private Sub Worksheet_Change(ByVal Target As Range)

        Dim Rng As Range, rCell As Range

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

        Set Rng = Intersect(Target, Me.Columns("A:B"))

        If Not Rng Is Nothing Then

            For Each rCell In Rng.Cells

                With rCell

                    ThisWorkbook.Sheets(sSecondo_Foglio).Range(.Address).Value = .Value

                End With

            Next rCell

        End If

    End Sub

    '<<========

    • Alt+IM per inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

    '========>>

    Option Explicit

    Public Const sPrimo_Foglio_Sorgente As String = "Foglio1"               '<<=== Modifica

    Public Const sSecondo_Foglio As String = "Foglio2"                          '<<=== Modifica

    '-------->>

    Public Sub Ordina_Dati()

        Dim WB As Workbook

        Dim srcSH As Worksheet, destSH As Worksheet

        Dim srcRng As Range, destRng As Range

        Dim arrIn As Variant

        Dim i As Long, j As Long

        Dim LRow As Long

        Set WB = ThisWorkbook

        With WB

            Set srcSH = .Sheets(sPrimo_Foglio_Sorgente)

            Set destSH = .Sheets(sSecondo_Foglio)

        End With

        With srcSH

            LRow = LastRow(srcSH, .Columns("A:A"))

            Set srcRng = .Range("A1:C" & LRow)

        End With

        Set destRng = destSH.Range(srcRng.Address)

        Call DoSort(srcRng)

        Call DoSort(destRng)

    End Sub

    '-------->>

    Public Sub DoSort(Rng As Range)

        Rng.Sort Key1:=Rng.Cells(1, 1), _

        Order1:=xlAscending, _

        Header:=xlYes, _

        OrderCustom:=1, _

        MatchCase:=False, _

        Orientation:=xlTopToBottom

    End Sub

    '--------->>

    Public Function LastRow(SH As Worksheet, _

        Optional Rng As Range, _

        Optional minRow As Long = 1)

        If Rng Is Nothing Then

            Set Rng = SH.Cells

        End If

        On Error Resume Next

        LastRow = Rng.Find(What:="*", _

            After:=Rng.Cells(1), _

            Lookat:=xlPart, _

            LookIn:=xlFormulas, _

            SearchOrder:=xlByRows, _

            SearchDirection:=xlPrevious, _

            MatchCase:=False).Row

        On Error GoTo 0

        If LastRow < minRow Then

            LastRow = minRow

        End If

    End Function

    '<<========

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel
    • Salva il file con l’estensione xlsm
    • Alt+F8 per aprire  la finestra di gestione delle macro
    • Seleziona Tester
    • Esegui

    In alternativa, inserisce un pulsante sul Foglio1 e assegna la macro Tester al pulsante.

    Potresti scaricare il mio file di prova Chiara20200903.xlsm

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-09-02T16:38:56+00:00

    ho usato la formula =Foglio1!A2 inserita nella colonna A2 del Foglio 1.

    Con Excel sono alle prime armi, abbiate pazienza....

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-09-02T16:37:56+00:00

    foglio 1 ordinato e foglio 2 no

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2020-09-02T16:35:42+00:00

    Purtroppo non ci riesco, ma ci riprovo più tardi. nel frattempo:

    questo è il mio file, la colonna A e B sono identiche nel Foglio 1 e Foglio 2, la C cambia

    dato che ho inserito il 5 dopo il 7 ho necessità di ordinare il file ma quando ordino il foglio 1 il foglio 2 si diseallinea (ordina le prime due colonne ma non la terza

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2020-08-31T21:14:34+00:00

    Ciao Chiara,

    Salve, ho un file excel con tre fogli di lavoro.

    In tutti e tre ho le colonne 1 e 2 identiche, le altre colonne variano ad ogni foglio.

    Quando faccio degli inserimenti di dati nel foglio 1 nelle colonne 1 e 2  i dati vengono inseriti automaticamente anche nel foglio 2 e 3. Quando però uso la funzione "ordina"  questa viene effettuata solo sul foglio 1 (anche se evidenzio tutti i tre fogli di lavoro) e così i dati variabili dei fogli  2 e  3 non vengono ordinati e quindi non corrispondono più alla colonna 1 e 2 che invece vengono comunque ordinate in tutti i tre fogli di lavoro

    C'è una soluzione a questo problema?

    Ti chiederei gentilmente di caricare il file problematico, dopo averlo depurato dei dati sensibili, su un servizio di condivisione di file, ad esempio Microsoft OneDrive o DropBox, e postare un link al file in una risposta qui.

    Per caricare il file su Microsoft OneDrive, vedi:

       Condividere file e cartelle di OneDrive

    Per caricare il file su DropBox, vedi:

    Come faccio a condividere file e cartelle in Dropbox?

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento