Следующее решение несколько неловко, поскольку требует отдельного листа, как объясняется в комментарии @ 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. Вот пример того, как лист 1 выглядит в результате.
Аналогичный вопрос был задан по адресу https://ask.libreoffice.org/en/question/21081/using-libreoffice-calc-dynamically-set-the-background-color-of-a-cell-to-the-hex- значение в этой ячейке /.