3

У меня есть 3 столбца: RG B. Я хочу, чтобы 4-й столбец имел цвет фона, соответствующий RGB в первых 3 столбцах.

Так что вроде:

<td bgcolor="#"+A1*10000+B1*100+C1> Cell content </td>

Как я могу это сделать?

Я нашел условное форматирование, но, похоже, это не позволяет вычислить значение RGB, которое я хочу.

1 ответ1

2

Следующее решение несколько неловко, поскольку требует отдельного листа, как объясняется в комментарии @ 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 выглядит в результате.

десять цветов на листе 1

Аналогичный вопрос был задан по адресу https://ask.libreoffice.org/en/question/21081/using-libreoffice-calc-dynamically-set-the-background-color-of-a-cell-to-the-hex- значение в этой ячейке /.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .