Basselには、HSLカラー値(色相、彩度、明度の値)をRGBカラー値(赤、青、緑の値)に変換できる式が必要です。彼は、誰かがこれを行うワークシートの数式またはマクロでそれを行う方法のいずれかを彼に示すことができるかどうか疑問に思います。

HSLからRGB値への変換は、特に簡単な作業ではありません。その背後にある数学に興味がある人は、https://en.wikipedia.org/wiki/HSL_and_HSV [このトピックに関するウィキペディアの記事をチェックしてください]。

変換を頻繁に行う必要がない場合、最も簡単な方法は次の手順に従うことです。

。リボンの[ホーム]タブを表示します。

。 [フォント]グループで、[塗りつぶしの色]ツールの右側にある下向き矢印をクリックします。 Excelは、色の小さなパレットと他のいくつかのオプションを表示します。

。その他の色を選択します。 Excelに[色]ダイアログボックスが表示されます。

。 [カスタム]タブが表示されていることを確認します。

。 [カラーモデル]ドロップダウンリストを使用して、[HSL]を選択します。 (図1を参照)

。ダイアログボックスの下部に、Hue、Sat、およびLumの個々の値が表示されます。これらの値を任意の値に変更します。

。 [カラーモデル]ドロップダウンリストを使用して、[RGB]を選択しました。ダイアログボックスの下部に表示される値は、HSL値(手順6で入力)です

RGBに変換されます。

。完了したら、[キャンセル]をクリックします。

このアプローチでは、各HSL値が0〜255の範囲で表現できることを前提としています。ただし、HSL値が角度(色相の場合)またはパーセンテージ(彩度と輝度の場合)の場合は、次のものが必要になります。手順6で入力する前に、手動で変換します。角度に255を掛けてから、360で割ると、角度の値を変換できます。

パーセンテージは、2.55を掛けることで変換できます。

より頻繁に値を取得する必要がある場合は、変換を行うための独自のユーザー定義関数を作成すると役立ちます。次の例では、3つのパラメーター(色相、彩度、輝度)を受け入れ、コンマで区切られた10進数のRGB値を含む文字列を返します。

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_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13535)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。