1、打开EXCEL,(EXCEL需要启用宏,短铘辔嗟具体做法请百度),把LAB数据复制到表中,如图所示,第一列是L,第二列是A,第三列是B
2、按下ALT+F11,调出VBA编辑器
3、选中ThisWork幞洼踉残Book,把以下代码复制到编辑器中Sub 宏1()endrow = Cells.Find("*"稆糨孝汶;, Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row '计算最后一个工作表的非空行号For i = 2 To endrowRange("d1:G1") = Array("R", "G", "B", "显色")ARR = LABtoRGB(Cells(i, 1), Cells(i, 2), Cells(i, 3)) Cells(i, 4) = ARR(0) Cells(i, 5) = ARR(1) Cells(i, 6) = ARR(2) Cells(i, 7).Interior.Color = RGB(ARR(0), ARR(1), ARR(2))NextEnd SubPublic Function LABtoRGB(l, a, b)Dim fx, fy, fz, rr, gg, bb, r, g, B2 As Doublefy = ((l + 16) / 116) ^ 3If fy < 0.008856 Then fy = l / 903.3Y = fyIf fy > 0.008856 Then fy = fy ^ (1 / 3)Else fy = 7.787 * fy + 16 / 116End Iffx = a / 500 + fyIf fx > 0.206893 Then X = fx ^ 3Else X = (fx - 16 / 116) / 7.787End Iffz = fy - b / 200If fz > 0.206893 Then Z = fz ^ 3Else Z = (fz - 16 / 116) / 7.787End IfX = X * (0.950456 * 255)Y = Y * 255Z = Z * (1.088754 * 255)rr = 3.240479 * X - 1.53715 * Y - 0.498535 * Zgg = -0.969256 * X + 1.875992 * Y + 0.041556 * Zbb = 0.055648 * X - 0.204043 * Y + 1.057311 * Zr = IIf(rr < 0, 0, IIf(rr > 255, 255, rr))g = IIf(gg < 0, 0, IIf(gg > 255, 255, gg))B2 = IIf(bb < 0, 0, IIf(bb > 255, 255, bb))LABtoRGB = Array(r, g, B2)End Function
4、回到表中,点击视图》查看宏》执行宏
5、结果完成