Google Sheets:将5字符状态串替换为对应颜色的'O'
状态字符转对应颜色'O'的公式实现方案
方案一:SUBSTITUTE嵌套 + 条件格式(无宏兼容性好)
普通公式无法直接输出带颜色的文本,因此先统一替换字符为'O',再通过条件格式为对应位置上色:
- 替换字符为'O':假设状态串存放在A列,在B1单元格输入嵌套的
SUBSTITUTE公式,将所有状态字符替换为'O':
可根据实际状态字符数量,继续嵌套=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"g","O"),"r","O"),"y","O")SUBSTITUTE扩展替换规则。 - 设置条件格式上色:
- 选中B列所有生成的'O'串单元格
- 新建条件格式规则,选择「使用公式确定要设置格式的单元格」
- 针对每个状态字符的颜色映射,输入对应公式并设置字体颜色:
- 绿色(对应原字符"g"):
=MID($A1,COLUMN()-COLUMN($B1)+1,1)="g" - 红色(对应原字符"r"):
=MID($A1,COLUMN()-COLUMN($B1)+1,1)="r" - 其他状态字符依此类推,替换公式中的字符和对应字体颜色即可。
- 绿色(对应原字符"g"):
方案二:VBA自定义函数(直接生成带颜色文本)
如果希望直接在单元格生成带颜色的'O'串,可通过VBA自定义函数实现:
- 按
Alt+F11打开VBA编辑器,插入新模块,粘贴以下代码:Function ColorStatus(statusStr As String) As String Dim i As Integer ColorStatus = String(Len(statusStr), "O") For i = 1 To Len(statusStr) Select Case Mid(statusStr, i, 1) Case "g" ActiveCell.Characters(Start:=i, Length:=1).Font.Color = RGB(0, 128, 0) Case "r" ActiveCell.Characters(Start:=i, Length:=1).Font.Color = RGB(255, 0, 0) Case "y" ActiveCell.Characters(Start:=i, Length:=1).Font.Color = RGB(255, 255, 0) '添加更多状态字符与颜色的映射规则 End Select Next i End Function - 返回工作表,在目标单元格输入
=ColorStatus(A1)(A1为状态串所在单元格),即可生成对应颜色的'O'串。
注意:方案二需要启用宏,适合频繁使用该功能的场景;方案一无宏要求,兼容性更强。
内容的提问来源于stack exchange,提问作者optimistic-orange
相关产品推荐
相关产品推荐

