Steve vorrebbe creare un’istruzione IF (utilizzando la funzione del foglio di lavoro) basata sul colore di una cella. Ad esempio, se A1 ha un riempimento verde, vuole restituire la parola “vai”, se ha un riempimento rosso, vuole restituire la parola “stop” e se è di qualsiasi altro colore restituisce la parola “nessuno dei due” . Steve preferisce non utilizzare una macro per farlo.

Sfortunatamente, non è possibile eseguire in modo accettabile questa attività senza utilizzare le macro, in una forma o nell’altra. La soluzione non macro più vicina è creare un nome che determini i colori, in questo modo:

  1. Seleziona la cella A1.

  2. Fare clic su Inserisci | Nome | Definire. Excel visualizza la finestra di dialogo Definisci nome.

  3. Usa un nome come “mycolor” (senza virgolette).

  4. Nella casella Si riferisce a, immettere quanto segue, come una singola riga:

  5. Fare clic su OK.

Con questo nome definito, puoi, in qualsiasi cella, inserire quanto segue:

=mycolor

Il risultato è che vedrai il testo basato sul colore della cella in cui inserisci questa formula. Lo svantaggio di questo approccio, ovviamente, è che non ti consente di fare riferimento a celle diverse da quella in cui è inserita la formula.

La soluzione, quindi, è utilizzare una funzione definita dall’utente, che è (per definizione) una macro. La macro può controllare il colore con cui viene riempita una cella e quindi restituire un valore. Ad esempio, il seguente esempio restituisce una delle tre parole, in base al colore in una cella di destinazione:

Function CheckColor1(range)

If range.Interior.Color = RGB(256, 0, 0) Then         CheckColor1 = "Stop"

ElseIf range.Interior.Color = RGB(0, 256, 0) Then         CheckColor1 = "Go"

Else         CheckColor1 = "Neither"

End If End Function

Questa macro valuta i valori RGB dei colori in una cella e restituisce una stringa basata su quei valori. Puoi usare la funzione in una cella in questo modo:

=CheckColor1(B5)

Se preferisci controllare i colori dell’indice invece dei colori RGB, allora la seguente variazione funzionerà:

Function CheckColor2(range)

If range.Interior.ColorIndex = 3 Then         CheckColor2 = "Stop"

ElseIf range.Interior.ColorIndex = 14 Then         CheckColor2 = "Go"

Else         CheckColor2 = "Neither"

End If End Function

Sia che tu stia utilizzando l’approccio RGB o l’approccio dell’indice di colore, ti consigliamo di verificare che i valori utilizzati nelle macro riflettano i valori effettivi utilizzati per i colori nelle celle che stai testando. In altre parole, Excel ti consente di utilizzare diverse sfumature di verde e rosso, quindi ti consigliamo di assicurarti che i valori RGB ei valori dell’indice di colore utilizzati nelle macro corrispondano a quelli utilizzati dalle sfumature di colore nelle celle.

Un modo per farlo è usare una macro molto semplice che non fa altro che restituire un valore di indice di colore:

Function GetFillColor(Rng As Range) As Long     GetFillColor = Rng.Interior.ColorIndex End Function

Ora, nel tuo foglio di lavoro, puoi usare quanto segue:

=GetFillColor(B5)

Il risultato è che viene visualizzato il valore dell’indice del colore della cella B5. Supponendo che la cella B5 sia formattata utilizzando uno dei colori previsti (rosso o verde), è possibile ricollegare il valore di indice alle macro precedenti per ottenere i risultati desiderati. Tuttavia, potresti semplicemente saltare questo passaggio e fare affidamento sul valore restituito da GetFillColor per mettere insieme una formula IF, in questo modo:

=IF(GetFillColor(B5)=14,"Go", IF(GetFillColor(B5)=3,"Stop", "Neither"))

Tieni presente che queste funzioni (sia che tu guardi i valori di colore RGB o i valori dell’indice di colore) esaminano la formattazione esplicita di una cella. Non tengono conto di alcuna formattazione implicita, come quella applicata tramite la formattazione condizionale.

Per altre buone idee, formule e funzioni su come lavorare con i colori, fare riferimento a questa pagina sul sito web di Chip Pearson:

http://www.cpearson.com/excel/colors.aspx

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (10779) si applica a Microsoft Excel 97, 2000, 2002 e 2003.

Puoi trovare una versione di questo suggerimento per l’interfaccia a barra multifunzione di Excel (Excel 2007 e versioni successive) qui: