Bassel necessita di una formula in grado di convertire i valori di colore HSL (valori di tonalità, saturazione e luminosità) in valori di colore RGB (valori di rosso, blu e verde). Si chiede se qualcuno possa indicarlo a una formula del foglio di lavoro che lo farà o un modo per farlo in una macro.

La conversione da valori HSL a RGB non è un’impresa particolarmente banale. Per chi è interessato alla matematica dietro di esso, è possibile check out the Wikipedia article on the topic.

Se è necessario eseguire la conversione di rado, il modo più semplice è seguire questi passaggi:

  1. Visualizza la scheda Home della barra multifunzione.

  2. Fare clic sulla freccia in basso sul lato destro dello strumento Colore riempimento, nel gruppo Carattere. Excel visualizza una piccola tavolozza di colori e alcune altre opzioni.

  3. Scegli più colori. Excel visualizza la finestra di dialogo Colori.

  4. Assicurati che sia visualizzata la scheda Personalizza.

  5. Utilizzando l’elenco a discesa Modello di colore, scegliere HSL. (Vedi figura 1.)

  6. Nella parte inferiore della finestra di dialogo puoi vedere i singoli valori per Hue, Sat e Lum. Cambia questi valori in quello che vuoi.

  7. Utilizzando l’elenco a discesa Modello di colore, scegli RGB. I valori visualizzati nella parte inferiore della finestra di dialogo sono i valori HSL (immessi al passaggio 6)

convertito in RGB.

  1. Al termine, fai clic su Annulla.

Questo approccio presuppone che ciascuno dei tuoi valori HSL possa essere espresso nell’intervallo da 0 a 255. Se, tuttavia, i tuoi valori HSL sono un angolo (per la tonalità) o una percentuale (per la saturazione e la luminanza), allora avrai bisogno per convertirli manualmente prima di inserirli al punto 6. È possibile convertire un valore di angolo moltiplicando l’angolo per 255 e quindi dividendolo per 360.

Le percentuali possono essere convertite moltiplicandole per 2,55.

Se hai bisogno di ottenere i valori più spesso, allora la creazione della tua funzione definita dall’utente per eseguire la conversione sarà d’aiuto. L’esempio seguente accetta tre parametri (tonalità, saturazione e luminanza) e restituisce una stringa contenente i valori RGB decimali separati da virgole.

Function HSLtoRGB(Hue As Integer, Saturation As Integer, _   Luminance As Integer) As String     Dim r As Integer     Dim g As Integer     Dim b As Integer     Dim C As Double     Dim X As Double     Dim m As Double     Dim rfrac As Double     Dim gfrac As Double     Dim bfrac As Double     Dim hangle As Double     Dim hfrac As Double     Dim sfrac As Double     Dim lfrac As Double

If (Saturation = 0) Then         r = 255         g = 255         b = 255     Else         lfrac = Luminance / 255         hangle = Hue / 255  360         sfrac = Saturation / 255         C = (1 - Abs(2  lfrac - 1))  sfrac         hfrac = hangle / 60         hfrac = hfrac - Int(hfrac / 2)  2 'fmod calc         X = (1 - Abs(hfrac - 1))  C         m = lfrac - C / 2         Select Case hangle             Case Is < 60                 rfrac = C                 gfrac = X                 bfrac = 0             Case Is < 120                 rfrac = X                 gfrac = C                 bfrac = 0             Case Is < 180                 rfrac = 0                 gfrac = C                 bfrac = X             Case Is < 240                 rfrac = 0                 gfrac = X                 bfrac = C             Case Is < 300                 rfrac = X                 gfrac = 0                 bfrac = C             Case Else                 rfrac = C                 gfrac = 0                 bfrac = X         End Select         r = Round((rfrac + m)  255)

g = Round((gfrac + m) * 255)

b = Round((bfrac + m) * 255)

End If     HSLtoRGB = Str(r) & "," & Str(g) & "," & Str(b)

End Function

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

Questo suggerimento (13535) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.