Excel 中的 VBA 饼图

VBA Pie Chart in Excel

提问人:fernc79 提问时间:10/31/2023 更新时间:11/8/2023 访问量:48

问:

我需要帮助在 excel 中创建一个包含 33 个部分的饼图。我相信需要VBA,因为我想要以下格式。任何想法都会得到极大的赞赏。 对于每件作品,根据单元格的值,我希望它是绿色(没有问题)、红色(需要)或黄色(机会) 例如 标识符 # 结果 1 没问题 2 机会 3 需要 ...33

感谢您的帮助!

我创建了一个常规的饼图,但是,必须单独更改每个切片上的颜色有点乏味。我真的希望切片的颜色是自动化的。

VBA 可视化 Excel-2007 饼图

评论

2赞 PeterT 10/31/2023
Jon Peltier 的网站有大量关于 Excel 图表的信息。本页讨论条件格式如何提供帮助。您还可以查看按类别设置颜色。
1赞 FunThomas 10/31/2023
您能否分享一下您的数据是什么样子的,也许还有您当前图表的屏幕截图?

答:

0赞 Jon Peltier 11/8/2023 #1

饼图可能不是最佳选择。清楚地标记 33 片并不容易。在水平条形图中进行标记效果会更好,并且条形图可能会占用更少的空间并且仍然清晰易读。

Pie and Bar Charts Conditionally Formatted by VBA

下面的代码适用于任一图表类型。

Sub ColorByValue()
  If Not ActiveChart Is Nothing Then
    With ActiveChart
      Dim srs As Series
      Set srs = .SeriesCollection(1)
      Dim vals As Variant
      vals = srs.Values
      Dim iPt As Long
      For iPt = 1 To UBound(vals)
        Select Case vals(iPt)
          ' select your cutoff values and colors
          Case Is >= 8
            srs.Points(iPt).Format.Fill.ForeColor.RGB = 5287936 ' vbGreen
          Case Is <= 3
            srs.Points(iPt).Format.Fill.ForeColor.RGB = vbRed
          Case Else
            srs.Points(iPt).Format.Fill.ForeColor.RGB = 49407 ' vbYellow
        End Select
      Next
    End With
  Else
    MsgBox "Select a chart to format!", vbExclamation, "No Active Chart"
  End If
End Sub