Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    3

    [excel] Formattazione condizionale su più fogli

    Buon giorno a tutti.
    Ho una cartella excel (versione 2003)che contiene al suo interno 5 fogli di lavoro.
    I fogli sono per semplicità

    A B C D E

    In ognuno dei fogli c'è una colonna che contiene dei valori

    Ho necessità di evidenziare quando ci sono valori duplicati. Supponiamo che le celle in questione siano

    A!A1(foglio a cella A2) e B!A2

    io devo sapere quando queste sono uguali ed evidenziarle entrambe in rosso. Volevo inserire la formattazione condizionale ma non mi permette di effettuare il controllo su altri fogli e inoltre, excel mi da la possibilità di effettuare solo tre confronti. Io ne devo effettuare 4

    a su b ; a su c; a su d; a su e

    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Se ho capito bene dovrebbe bastare una sub di questo genere dove al posto di 2 metterai la prima riga da cui partono i tuoi valori e al posto di 10 l'ultima riga.
    Sostituisci anche Foglio1 col nome del tuo primo foglio con cui confrontare tutti gli altri.

    codice:
    Sub confronta()
    For i = 2 To 10
    
        For Each foglio In ThisWorkbook.Sheets
            If foglio.Name <> "Foglio1" Then
                If Sheets("Foglio1").Cells(i, 1).Value = foglio.Cells(i, 1).Value Then
                    Sheets("Foglio1").Cells(i, 1).Interior.ColorIndex = 3
                    foglio.Cells(i, 1).Interior.ColorIndex = 3
                End If
    
            End If
        Next foglio
    Next i
    End Sub

  3. #3
    Utente di HTML.it L'avatar di nelsonblu
    Registrato dal
    Feb 2007
    Messaggi
    2,234
    Fai il confronto in un'altra colonna e leghi la formattazione condizionale al risultato di quella colonna.
    Non ho capito bene il limite di tre confroni che dici..
    allora diciamo il caso piu complesso, che deve essere rossa la scritta se i valori sono uguali in tutti e quattro i fogli A-B-C-D-E

    Nel foglio 1, in un'altra cella di un'altra colonna (es. C1) scrivi la formula
    =SE(E(A1=B!A1;A1=C!A1;A1=D!A1;;A1=E!A1);"si";"no") e trascini
    poi nella form. condizionale imponi che A1 è rossa se =$C$1="si"

  4. #4
    Utente di HTML.it L'avatar di nelsonblu
    Registrato dal
    Feb 2007
    Messaggi
    2,234
    Originariamente inviato da nicola75ss
    Se ho capito bene dovrebbe bastare una sub di questo genere dove al posto di 2 metterai la prima riga da cui partono i tuoi valori e al posto di 10 l'ultima riga.
    Sostituisci anche Foglio1 col nome del tuo primo foglio con cui confrontare tutti gli altri.

    codice:
    Sub confronta()
    For i = 2 To 10
    
        For Each foglio In ThisWorkbook.Sheets
            If foglio.Name <> "Foglio1" Then
                If Sheets("Foglio1").Cells(i, 1).Value = foglio.Cells(i, 1).Value Then
                    Sheets("Foglio1").Cells(i, 1).Interior.ColorIndex = 3
                    foglio.Cells(i, 1).Interior.ColorIndex = 3
                End If
    
            End If
        Next foglio
    Next i
    End Sub
    Ci deve essere qualche errore... fa le celle rosse a prescindere dal valore

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Ciao nelson.
    Per come ho interpretato io il suo problema funziona correttamente.

    Ti allego il file.

    http://myfreefilehosting.com/f/6ca096f5db_0.04MB

  6. #6
    Utente di HTML.it L'avatar di nelsonblu
    Registrato dal
    Feb 2007
    Messaggi
    2,234
    Hai ragione, funziona. Non so per quale ragione ho pensato che si aggiornasse in automatico, invece ad ogni cambio di valore di cella va rieseguito lo script

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Per quanto io sappia non c'è alternativa a ciò.

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Mi sono accorto della presenza di un bug.
    Ho aggiunto a monte la rimozione della formattazione delle celle.

    codice:
    Sub confronta()
    ' rimuovo la formattazione dalle celle
    For Each foglio In ThisWorkbook.Sheets
    foglio.Select
    Range("a:a").Select
    Selection.Interior.ColorIndex = xlNone
    Next foglio
    ' fine rimozione formattazione
    For i = 2 To 10
        For Each foglio In ThisWorkbook.Sheets
            If foglio.Name <> "Foglio1" Then
                If Sheets("Foglio1").Cells(i, 1).Value = foglio.Cells(i, 1).Value Then
                    Sheets("Foglio1").Cells(i, 1).Interior.ColorIndex = 3
                    foglio.Cells(i, 1).Interior.ColorIndex = 3
                End If
            End If
        Next foglio
    Next i
    End Sub

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    3
    ho utilizzato la soluzione proposta da nicolas. in verità l'ho modificata perchè io ho necessita di confrontare i valori di ogni singolo foglio con gli altri non solo per il primo.

    comunque lo spunto è stato utile per il 99% della soluzione la mio problema

    ciao e grazie

  10. #10
    Utente di HTML.it L'avatar di nelsonblu
    Registrato dal
    Feb 2007
    Messaggi
    2,234
    Originariamente inviato da nicola75ss
    Per quanto io sappia non c'è alternativa a ciò.
    Che strano però... il modulo auto_open () funziona quando si apre la cartella e per l'apertura del foglio non c'è nulla. Mah..?!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.