我在VBA中使用单个工作表页面的值创建了一个饼图(这些值是从学生列表数据库中导入的),我想要转换为饼图的值与性别列,此列上的值可以是“M”或“F”,这是我尝试过的代码:
Sub CriarGrafico()
Set graficos = Sheets(3).ChartObjects
On Error Resume Next
If Not graficos Is Nothing Then graficos.Delete
'elimina os graficos existentes na folha 8
Set Grafico = graficos.Add(0, 100, 500, 250)
Grafico.Chart.ChartWizard _
Source:=Sheets(2).Range("E7:E13"), _
Gallery:=xlPie, _
CategoryLabels:=1, _
SeriesLabels:=1, _
HasLegend:=True
我在这里有两个问题,首先,我的范围似乎不起作用,我猜它是因为我只使用一个列的值,其次,如果我确实尝试包含一个如图所示,该图表不会聚集M和F值(因此,如果我有3个男性和2个女性学生,则图表显示5个值)
我希望我的图表只显示2个结果,一个用于M值和F值。
答案 0 :(得分:1)
我假设您的输入如下:
Student1 M
Student2 F
Student3 F
Student4 F
Student5 M
Student6 M
Student7 F
你想要这样的东西:
该图表不会“聚集M和F”,即它不会为您计算M和F的总数。你必须自己这样做,例如使用=COUNTIF($E$7:$E$13,"=M")
和=COUNTIF($E$7:$E$13,"=F")
,这会产生如下结果:
M 3
F 4
您可以将其绘制为如上图所示的饼图。
如果没有看到你的表,我无法告诉你为什么你的“范围不起作用”,但这段代码绝对适用于我:
Dim Grafico As ChartObject
Dim s As Series
Set Grafico = Sheets(3).ChartObjects.Add(0, 100, 500, 250)
With Grafico.Chart
.ChartType = xlPie
.SetSourceData Source:=Sheets("Sheet3").Range("G8:H9")
.Location Where:=xlLocationAsObject, Name:=Sheets(3).Name
End With