我有 3 列:RG B。我希望第 4 列具有与前 3 列的 RGB 相对应的背景颜色。
大致如此:
<td bgcolor="#"+A1*10000+B1*100+C1> Cell content </td>
我怎么做?
我已经找到了条件格式,但是它似乎无法计算我想要的 RGB 值。
答案1
以下解决方案有些尴尬,因为它需要单独的工作表,正如@tohuwawohu 的评论中所解释的那样。
首先,转到Tools -> Macros -> Organize Macros -> LibreOffice Basic
标准宏中的某处并添加以下用户定义函数。
Function BGCOLOR(rgb_array, address)
Dim red, green, blue As Integer
Dim positionOfMatch As Integer
Dim sheet_name, cell_name As String
Dim oSheet, oCell As Object
red = rgb_array(1, 1)
green = rgb_array(1, 2)
blue = rgb_array(1, 3)
positionOfMatch = InStr(address, ".")
sheet_name = Mid(address, 2, positionOfMatch - 2) 'start after initial $
cell_name = Right(address, Len(address) - positionOfMatch)
oSheet = ThisComponent.getSheets().getByName(sheet_name)
oCell = oSheet.getCellRangeByName(cell_name)
oCell.CellBackColor = RGB(red, green, blue)
BGCOLOR="BG Color for " & address
End Function
然后,作为示例,启动一个新的 Calc 电子表格并=RANDBETWEEN(0,255)
在 A1 中输入。将此公式拖放到 C10 并填充。
接下来,添加新工作表。在新工作表的 A1 单元格中输入:
=BGCOLOR($Sheet1.A1:C1, CELL("ADDRESS", $Sheet1.D1))
也可以通过单击公式、转到该工作表并选择范围或单元格来自动输入这些地址。但是, BGCOLOR
可能会在您仍在编辑公式时尝试运行,这可能会很烦人。
最后,将公式拖到 A10。以下是 Sheet 1 的结果示例。