参照屏幕截图,我想以编程方式格式化单元格,如下所示:
If cell B4 and cell F4 are both red text, then format cell J4 to be red text.
(其他所有细胞也同样如此)。
我发现可以根据另一个单元格中包含的值来格式化一个单元格,但我发现不能根据单元格的格式来格式化。这可能吗?
添加更多信息。如上所述,我知道如何根据单元格的值设定条件。以下是一个例子:
Sub FormatUsingVBA()
Dim rng As Range
Dim lastRow As Long
lastRow = Cells(Rows.Count, 3).End(xlUp).Row
Set rng = Range("C2:C" & lastRow)For Each cell In rng
If cell.Value2 = "Adult" Then
Range(cell.Address).Offset(0, -2).Interior.ColorIndex = 3
ElseIf cell.Value2 = "KID" Then
Range(cell.Address).Offset(0, -2).Interior.ColorIndex = 4
ElseIf cell.Value2 = "Teenager" Then
Range(cell.Address).Offset(0, -2).Interior.ColorIndex = 6
Else
Range(cell.Address).Offset(0, -2).Interior.ColorIndex = 0
End If
Next cell
End Sub
因此,它有一个基于单元格中的值的条件 ( If cell.Value2 = "Adult"
)。我想基于单元格的格式,但我不知道该怎么做。
在单元格中输入宏命令
答案1
从https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_STYLE_function:
没有直接的方法来确定(在公式中)已对单元格应用了哪种格式。
所以听起来你需要编写一个宏,至少对于 Calc 来说是这样。对 MS Excel 不了解。
编辑:
从我的回答https://ask.libreoffice.org/en/question/154239/get-color-of-text-in-cell/。
Function RGBprobe(x , y, optional z)
Dim RGBarray(1 to 3)
oDoc = ThisComponent
oSheet = oDoc.Sheets(0)
'Decreasing coordinate values by 1 because BASIC starts numbering with 0.
If NOT IsMissing(z) Then oSheet = oDoc.Sheets(z-1)
oCell = oSheet.getCellByPosition(x-1,y-1)
CBkC = oCell.CharColor
RGBarray(1) = Red(CBkC) : RGBarray(2) = Green(CBkC) : RGBarray(3) = Blue(CBkC)
RGBprobe = RGBarray
End Function
例如,检查单元格颜色的公式A1
为=RGBPROBE(1;1)
。要查看所有三个返回值,请按++Ctrl查看数组公式结果。ShiftEnter