2011-12-15 62 views
0

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

我假设你的投入是这样的:

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 
相关问题