单列从列到图表的值

时间:2011-12-15 09:15:01

标签: excel vba office-2010

我在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值。

1 个答案:

答案 0 :(得分:1)

我假设您的输入如下:

Student1    M
Student2    F
Student3    F
Student4    F
Student5    M
Student6    M
Student7    F

你想要这样的东西:

enter image description here

该图表不会“聚集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