Excel实战技巧80: 添加可视化的指示标志

2020-06-03 09:06:42 浏览数 (1)

视觉效果比枯燥的数字更有表现力。我们常常将数据图表化,我们也可以对图表中的一些细节可视化以作为补充。本文将展示如何在解释文本中添加可视化的指示标志,使读者在看文字之前对其表达的含义有一个大致的了解。

实现在文本中添加可视化的指示标志有多种方法,在thespreadsheetguru.com中介绍了3种方法,下面逐一介绍。

方法1:使用条件格式

可以使用条件格式中的三色交通图标,如下图1所示。

图1

在列C的单元格中,输入列B中的相应公式,选中这些单元格,单击功能区“开始”选项卡中的“条件格式——新建规则”,在弹出的对话框中进行如下图2所示的设置。

图2

方法2:使用特殊字体

可以对特定的字符使用Wingdings3字体来获取指示标志符号。例如,下图3为要添加指示标志的文本。

图3

首先,在文本前面添加特定字符,如下图4所示。

图4

然后,设置字体颜色,如下图5所示。

图5

最后,设置字体为Wingdings3,得到指示标志,如下图6所示。

图6

方法3:使用VBA代码自动添加标志

选择要添加指示标志的文本,运行VBA代码,将循环添加3种标志之中的一种标志,如下图7所示。

图7

实现的代码:

代码语言:javascript复制
'在所选文本开头添加三角指示标志
Sub TextTickmark_Triangle()
  Dim cell As Range
  Dim TextFont As String
  Dim TickChar As String
  Dim TickColor As Long
  Dim BoldArray() As Variant
  Dim BoldOffset As Integer
  Dim y As Long
  Dim x As Long
 
  '确定方向和颜色
   If TypeName(Selection) <>"Range" Then Exit Sub
 
  '遍历所选区域的每个单元格
  For Each cell In Selection.Cells
       
    '存储字体类型
    TextFont = cell.Characters(1, 1).Font.Name
 
    '确定要添加的标志颜色/类型
    If TextFont = "Wingdings 3" Then
      Select Case Left(cell.Text, 2)
        Case "p "
          '红色
          TickColor = -16776961
          TickChar = "q "
          BoldOffset = 0
        Case "q "
          '橙色
          TickColor = 49407
          TickChar = "u "
          BoldOffset = 0
          '重置
        Case "u "
          TickColor = 0
          TickChar = ""
          BoldOffset = -2
        Case Else
          Exit Sub
      End Select
    Else
      '绿色
      TickColor = -11489280
      TickChar = "p "
      BoldOffset = 2
    End If
 
    '重置Bold Character数组
    Erase BoldArray
    ReDim BoldArray(0)
    y = 0
     
    '记录在文本中的粗体字符
    For x = 1 To Len(cell.Text)
      If cell.Characters(x, 1).Font.FontStyle ="Bold" Then
        ReDim Preserve BoldArray(y)
        BoldArray(y) = x   BoldOffset
        y = y   1
      End If
    Next x
   
    '从文本中移除前一个标志
    If TickChar <> "p " Then
      cell.Font.Color = cell.Characters(3,1).Font.Color
      cell.Font.Name = cell.Characters(3,1).Font.Name
      cell.FormulaR1C1 = Right(cell.Text,Len(cell.Text) - 2)
    End If
     
    '添加标志
    If TickChar <> "" Then
      cell.FormulaR1C1 = TickChar & cell.Text
      '确保文本不是粗体
      cell.Font.FontStyle = "Normal"
       
      With cell.Characters(Start:=1,Length:=1).Font
        .Name = "Wingdings 3"
        .Color = TickColor
      End With
    End If
   
    '重新将文本中原粗体字符加粗
    If Not IsEmpty(BoldArray(0)) Then
      For x = LBound(BoldArray) ToUBound(BoldArray)
        cell.Characters(Start:=BoldArray(x),Length:=1).Font.FontStyle = "Bold"
      Next x
    End If
      
  Next cell
End Sub
vba

0 人点赞