Gnumeric/LO Calc - 如何获得单元格背景颜色?

vla*_*lad 2 spreadsheet openoffice-calc gnumeric

我有很大的电子表格,行的颜色没有常规规则,所以单元格颜色不能由单元格条目确定。我想查找单元格颜色并将其用作值。

电子表格是这样的:

----------
data|data| <-- background row color red
----------
data|data| <-- background row color blue
----------
data|data| <-- background row color yellow
----------
Run Code Online (Sandbox Code Playgroud)

我想创建一个新列来报告单元格背景颜色,例如“RED”或“EE0000”。Excel/Gnumeric/LO Calc 都有一个名为cell“颜色”的信息查找函数,它似乎只能判断单元格是否着色:

cell("color", A2)

返回 0 或 1。

那么如何在 Gnumeric 或 LO Calc 中获取单元格背景颜色?

Nis*_*ach 5

在 LibreOffice Calc 中:

  1. 转到工具 > 宏 > 组织宏 > LibreOffice Basic >
    我的宏 > 标准 > 模块 1

  2. 选择“主要”并单击“编辑”。

  3. 它将包含空的 3 行模板:

    REM  *****  BASIC  *****
    
    Sub Main
    
    End Sub
    
    Run Code Online (Sandbox Code Playgroud)

    在模板后添加:

    Function bgcolor(c,r)
      Dim oDoc  As Object   ' define variables
      Dim oSheet As Object
      Dim oCell As Object
      oDoc  = ThisComponent
      oSheet= oDoc.getSheets().getByIndex(0)
      oCell = oSheet.getCellByPosition(c-1,r-1)
      bgcolor = oCell.CellBackColor
    End Function
    
    Run Code Online (Sandbox Code Playgroud)

    您应该在编辑器中看到类似的内容:

    LibreOffice Calc 中的 BGColor 宏

  4. 关闭管理器,现在您可以像使用任何其他功能一样使用该功能:

例子:

bgcolor(3,1)
bgcolor(3, CELL("Row",A1))
bgcolor(CELL("COL", A1), CELL("ROW", A1))
Run Code Online (Sandbox Code Playgroud)