LibreCalc:更改背景颜色

LibreCalc:更改背景颜色

我有 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 的结果示例。

第 1 页上有 10 种颜色

有人问过类似的问题https://ask.libreoffice.org/en/question/21081/using-libreoffice-calc-dynamically-set-the-background-color-of-a-cell-to-the-hex-value-in-that-c​​ell/

相关内容