Bassel cần một công thức có thể chuyển đổi các giá trị màu HSL (giá trị màu sắc, độ bão hòa và độ đậm nhạt) thành các giá trị màu RGB (giá trị màu đỏ, xanh lam và xanh lục). Anh ta tự hỏi liệu có ai có thể chỉ cho anh ta một công thức trang tính sẽ thực hiện điều này hoặc một cách để thực hiện điều đó trong macro.

Chuyển đổi từ giá trị HSL sang RGB không phải là một công việc đặc biệt nhỏ nhặt. Đối với những người quan tâm đến toán học đằng sau nó, bạn có thể xem bài viết trên Wikipedia về chủ đề.

Nếu bạn cần thực hiện chuyển đổi không thường xuyên, cách dễ nhất là làm theo các bước sau:

  1. Hiển thị tab Trang đầu của dải băng.

  2. Bấm vào mũi tên xuống ở phía bên phải của công cụ Tô màu, trong nhóm Phông chữ. Excel hiển thị một bảng màu nhỏ và một số tùy chọn khác.

  3. Chọn thêm màu. Excel sẽ hiển thị hộp thoại Màu.

  4. Đảm bảo rằng tab Tùy chỉnh được hiển thị.

  5. Sử dụng danh sách thả xuống Mô hình màu, chọn HSL. (Xem Hình 1.)

  6. Ở cuối hộp thoại, bạn có thể thấy các giá trị riêng lẻ cho Hue, Sat và Lum. Thay đổi các giá trị này thành bất kỳ giá trị nào bạn muốn.

  7. Sử dụng danh sách thả xuống Mô hình màu, chọn RGB. Các giá trị hiển thị ở dưới cùng của hộp thoại là giá trị HSL (đã nhập ở bước 6)

được chuyển đổi sang RGB.

  1. Nhấp vào Hủy khi hoàn tất.

Cách tiếp cận này giả định rằng mỗi giá trị HSL của bạn có thể được biểu thị trong phạm vi từ 0 đến 255. Tuy nhiên, nếu các giá trị HSL của bạn là một góc (cho màu sắc) hoặc một phần trăm (cho độ bão hòa và độ sáng), thì bạn sẽ cần để chuyển đổi chúng theo cách thủ công trước khi nhập chúng ở bước 6. Bạn có thể chuyển đổi giá trị góc bằng cách nhân góc với 255 rồi chia cho 360.

Phần trăm có thể được chuyển đổi bằng cách nhân chúng với 2,55.

Nếu bạn có nhu cầu nhận các giá trị thường xuyên hơn, thì việc tạo hàm do người dùng xác định của riêng bạn để thực hiện chuyển đổi sẽ hữu ích. Ví dụ sau đây chấp nhận ba tham số (Hue, Saturation và Luminance) và trả về một chuỗi chứa các giá trị RGB thập phân được phân tách bằng dấu phẩy.

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 là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (13535) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365.