2011-12-15 3 views
0

J'ai créé ce code dans VBA pour créer un graphique à secteurs à partir des valeurs d'une seule feuille (ces valeurs ont été importées depuis une base de données de listes d'étudiants), les valeurs que je veux convertir en un diagramme circulaire sont liés à la colonne du sexe, les valeurs de cette colonne peut être soit « M » ou « F », c'est le code que j'ai essayé:Valeurs uniques d'une colonne vers un graphique

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 

J'ai deux problèmes ici, d'abord tous, ma gamme ne semble pas fonctionner, je suppose que c'est parce que je n'utilise que les valeurs d'une seule colonne, deuxièmement, si j'essaie d'inclure une seconde colonne, le graphique n'agglomère pas les M et F valeurs (donc si j'ai 3 étudiants qui sont des étudiants masculins et 2 étudiantes, le graphique affiche 5 valeurs)

Je veux que mon graphique affiche simplement 2 résultats, un pour la valeur M et la valeur F.

Répondre

1

Je suppose que votre entrée ressemble à ceci:

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

et que vous voulez quelque chose comme ceci:

enter image description here

Le tableau ne sera pas "agglomérat M et F", ie ne calculera pas le nombre total de M et F pour vous. Vous devez faire vous-même, par exemple en utilisant =COUNTIF($E$7:$E$13,"=M") et =COUNTIF($E$7:$E$13,"=F"), ce qui se traduirait par quelque chose comme ceci:

M 3 
F 4 

Vous pouvez tracer un graphique circulaire comme celle-ci.

Sans voir votre feuille Je ne peux pas vous dire pourquoi votre « gamme ne fonctionne pas », mais ce code fonctionne vraiment pour moi:

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 
Questions connexes