Condividi tramite

Rilevare colore celle

Anonimo
2023-06-24T20:07:29+00:00

Avrei una situazione del genere , il range di celle D8:AJ8 é di colore azzurro , a volte una o piu' di queste celle diventa di colore viola ( RGB 112-48-160 ) mi servirebbe ottenere in AK1 il seguente risultato : se i colori viola nel range D8:AJ8 sono >0;1;0

Ringrazio se qualcuno sa aiutarmi.

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

  1. Anonimo
    2023-06-25T00:19:24+00:00

    Ciao Lupetto,

    Purtroppo, Excel non rivela alcun metodo per catturare o intercettare il cambiamento di colore di una cella

    Se le celle dell'intervallo di conteggio non cambiano valore o se le celle di interesse sono colorate come risultato di regole di formattazione condizionale che rispondono alle modifiche di valore delle celle al di fuori dell'intervallo di conteggio, la funzione non verrà ricalcolata. Per ovviare a questo inconveniente sostituisci il codice della funzione ContaColore con la seguente versione in cui la nuova istruzione è evidenziata in rosso:

    '========>>

    Option Explicit

    '-------->>

    Public Function ContaColore(rData As Range) As Long

    Dim rCell As Range 
    
    Dim iColor As Long 
    
    Dim iCtr As Long 
    
    iColor = RGB(112, 48, 160)      '<<=== Modifica 
    

    Application.Volatile

    For Each rCell In rData.Cells 
    
        If Evaluate("Helper(" & rCell.Address() & ")") = iColor Then 
    
            iCtr = iCtr + 1 
    
        End If 
    
    Next rCell 
    
    ContaColore = iCtr 
    

    End Function

    '-------->>

    Private Function Helper(ByVal R As Range) As Double

    Helper = R.DisplayFormat.Interior.Color 
    

    End Function

    '<<========

    Con questa modifica, eventuali modifiche di valore che attivano la regola del formato condizionale per l'intervallo di interesse causeranno anche il ricalcolo della funzione. Nel caso di colori applicati manualmente, la modifica suggerita causerà il ricalcolo della funzione non appena qualsiasi valore del foglio viene modificato o il foglio viene ricalcolato.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2023-06-25T05:23:59+00:00

    Ciao Lupetto,

    Purtropp, Excel non rivela alcun metodo per catturare o intercettare il cambiamento di colore di una cella

    Se le celle dell'intervallo di conteggio non cambiano valore o se le celle di interesse sono colorate come risultato di regole di formattazione condizionale che rispondono alle modifiche di valore delle celle al di fuori dell'intervallo di conteggio, la funzione non verrà ricalcolata. Per ovviare a questo inconveniente sostituisci il codice della funzione ContaColore con la seguente versione in cui la nuova istruzione è evidenziata in rosso:

    '========>>

    Option Explicit

    '-------->>

    Public Function ContaColore(rData As Range) As Long

    Dim rCell As Range

    Dim iColor As Long

    Dim iCtr As Long

    iColor = RGB(112, 48, 160) '<<=== Modifica

    Application.Volatile

    For Each rCell In rData.Cells

    If Evaluate("Helper(" & rCell.Address() & ")") = iColor Then

    iCtr = iCtr + 1

    End If

    Next rCell

    ContaColore = iCtr

    End Function

    '-------->>

    Private Function Helper(ByVal R As Range) As Double

    Helper = R.DisplayFormat.Interior.Color

    End Function

    '<<========

    Con questa modifica, eventuali modifiche di valore che attivano la regola del formato condizionale per l'intervallo di interesse causeranno anche il ricalcolo della funzione. Nel caso di colori applicati manualmente, la modifica suggerita causerà il ricalcolo della funzione non appena qualsiasi valore del foglio viene modificato o il foglio viene ricalcolato.

    ===

    Regards,

    Norman

    Immagine

    Ciao Norman

    Ottima soluzione , funziona e gtazie.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-06-24T21:37:22+00:00

    Ciao Lupetto,

    Ho aggiornato il mio file di prova per dimostrare il conteggio sia delle celle con formattazione condizionale sia di quelle colorate manualmente.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-06-24T21:12:11+00:00

    Ciao Lupetto,

    Immagine

    Avrei una situazione del genere , il range di celle D8:AJ8 é di colore azzurro , a volte una o piu' di queste celle diventa di colore viola ( RGB 112-48-160 ) mi servirebbe ottenere in AK1 il seguente risultato : se i colori viola nel range D8:AJ8 sono >0;1;0

    Ringrazio se qualcuno sa aiutarmi.

    Per contare le celle colorate di interesse se il colore viene imposto tramite formattazione condizionale o manualmente, prova come segue

    In un modulo di copdice standard, incolla:

    '========>>

    Option Explicit

    '-------->>

    Public Function ContaColore(rData As Range) As Long

    Dim rCell As Range 
    
    Dim iColor As Long 
    
    Dim iCtr As Long 
    
    iColor = *RGB(112, 48, 160)      '&lt;&lt;=== Modifica*
    
    For Each rCell In rData.Cells 
    
        If Evaluate("Helper(" & rCell.Address() & ")") = iColor Then 
    
            iCtr = iCtr + 1 
    
        End If 
    
    Next rCell 
    
    ContaColore = iCtr 
    

    End Function

    '-------->>

    Private Function Helper(ByVal R As Range) As Double

    Helper = R.DisplayFormat.Interior.Color 
    

    End Function

    '<<========

    Nella cella AK1, immetti la formula:

     **=SE(contacolore(D8:AI8);1;0)**
    

    Potresti scaricare il mio file di prova Lupetto2_20230624.xlsm

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2023-06-24T20:46:44+00:00

    Ciao LUPETTO12,

    Sono Ibhadighi e sarei felice di aiutarti con la tua domanda. In questo forum, siamo consumatori Microsoft proprio come te.

    È possibile utilizzare una funzione VBA personalizzata per contare il numero di celle con un colore di riempimento specifico in un intervallo. Ecco un esempio di tale funzione:

    Funzione CountColor(intervallo come intervallo, colore lungo) come lungo Cella attenuata come intervallo Dim count As Long conteggio = 0 Per ogni cella Nell'intervallo Se la cella. interior.color = colore Quindi conteggio = conteggio + 1 Fine Se Cella successiva CountColor = conteggio Funzione finale Questa funzione accetta due argomenti: un intervallo di celle da controllare (intervallo) e il colore di riempimento da cercare (colore). Il colore di riempimento deve essere specificato come valore RGB, che è possibile ottenere utilizzando la funzione RGB (ad esempio, RGB (112, 48, 160) per il viola).

    Per utilizzare questa funzione, è necessario aggiungerla a un modulo VBA nella cartella di lavoro. Ecco come puoi farlo:

    Premere ALT+F11 per aprire l'editor di Visual Basic. Nell'editor fare clic con il pulsante destro del mouse sulla cartella di lavoro nella finestra Progetto e selezionare Inserisci > modulo. Incolla il codice sopra nel nuovo modulo. Chiudere l'editor. Dopo aver aggiunto la funzione alla cartella di lavoro, è possibile usarla in una formula simile alla seguente: =SE(CountColor(D8:AJ8; RGB(112, 48, 160))>0;1;0). Questa formula restituirà 1 se è presente almeno una cella con un colore di riempimento viola nell'intervallo D8:AJ8 e 0 in caso contrario.

    È possibile immettere questa formula nella cella AK1 per ottenere il risultato desiderato.

    Fateci sapere se avete bisogno di ulteriore aiuto.

    Migliori saluti IBHADIGHI

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

    La risposta è stata utile?

    0 commenti Nessun commento