Mos*_*ses 14 microsoft-excel microsoft-excel-2010
在 Excel 中,有几种方法可以根据其值动态地为整个单元格着色,但是有没有办法根据其值动态地仅对单元格的一部分进行着色?
例如,假设我正在构建一个类似于以下内容的报告:
_________________________
| | Dec | Nov |
|_______|___________|_____|
|Gross R| $75 (-25%)| $100|
|_______|___________|_____|
|Net Inc| $55 (+10%)| $50 |
|_______|___________|_____|
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我只想为百分比值 (-25%) 和 (+10%) 着色,而不是单元格中的美元值 $75 和 $55。增加问题的是着色应该是动态的(绿色表示正值,红色表示负值),并且这些单元格是参考(因此手动着色不在表格中)。
我曾尝试使用内置TEXT()函数,但这也不起作用。具体来说我试图=TEXT(A1,"$##")&" "&TEXT(A2,"[Green]0%;[Red](-0%)")其中A1是单元参照金额和A2是单元参照百分比增量。
令人沮丧的是,自定义格式[Green]0%;[Red](-0%)在应用于整个单元格时效果很好(通过自定义数字格式部分),但是当通过该TEXT()函数应用时,它停止工作。那么,如何自定义单元格内的部分值的颜色?
我发现有两种方法可以解决这个问题,但都不是真正最佳的。
第一种方法是将字符串分成两个单独的列,这样我就可以使用前面描述的自定义格式之一来设置其颜色。这不是一个理想的解决方案,因为我不得不在报告的“外观和感觉”上做出妥协,以容纳额外的列。
第二种方法是通过使用 VBA/宏,虽然我在这个特定场景中选择避免使用它,但本来可以完成任务。虽然我不会打印出整个工作代码,但本质上归结为:
ActiveCell或循环)Instr函数在字符串中查找要修改颜色的位置Instr再次使用以在字符串中查找您希望停止颜色的位置Characters(start, length)函数突出显示要修改的确切字符,传入之前找到的值。Font.Color = RGB(r,g,b)小智 7
可以在此处找到使用宏的示例:
Excel 宏 - For 循环为单元格的一部分着色
使用包含 for 循环的 Excel 宏循环遍历天气数据行和单元格文本的颜色部分(如果它包含单词 Hot 和蓝色如果它包含单词 Cool):
请注意 Instr 的 Hot 和 Cool 区分大小写。
指示
- 单击 Excel 中的开发工具选项卡
- 单击 Visual Basic 图标并将下面的宏文本复制到 1 代码窗口中
- 单击 Excel 图标切换回 Excel 视图
- 单击宏图标,选择名为 TextPartColourMacro 的宏,然后单击运行
完成的宏:
Sub TextPartColourMacro()
' Declarations and Initialisation
Dim Row As Integer, Col As Integer
Dim CurrentCellText As String
Col = 1
' Loop Through Rows 2 to 5
For Row = 2 To 5
' Get Text in Current Cell
CurrentCellText = ActiveSheet.Cells(Row, Col).Value
' Get the Position of the Text Hot and Cool
HotStartPosition = InStr(1, CurrentCellText, "Hot")
CoolStartPosition = InStr(1, CurrentCellText, "Cool")
' Colour the Word Hot Red
If HotStartPosition > 0 Then
ActiveSheet.Cells(Row, Col).Characters(HotStartPosition, 3).Font.Color = RGB(255, 0, 0)
End If
' Colour the Word Cool Blue
If CoolStartPosition > 0 Then
ActiveSheet.Cells(Row, Col).Characters(CoolStartPosition, 4).Font.Color = RGB(0, 0, 255)
End If
Next Row
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109012 次 |
| 最近记录: |