多语言展示
当前在线:603今日阅读:162今日分享:23

用EXCEL完成Lab颜色模型转RGB颜色模型

本经验使用EXCEL中的VBA来完成Lab颜色模型到RGB颜色模型的转换,并显示出所代表的颜色
工具/原料

office2010

方法/步骤
2

按下ALT+F11,调出VBA编辑器

3

选中ThisWorkBook,把以下代码复制到编辑器中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

结果完成

注意事项
1

如有疑问可以联系QQ651698455探讨

2

此经验只是把网上的一些代码翻译成VBA,方便使用。文辞粗浅,不足之处还请见谅

推荐信息