Выделите значения из столбца в диаграмму - PullRequest
0 голосов
/ 15 декабря 2011

Я сделал этот код в 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 Ответ

1 голос
/ 15 декабря 2011

Я предполагаю, что ваш ввод выглядит так:

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

и вы хотите что-то вроде этого:

enter image description here

Диаграмма не будет "агломерировать М и F", т.е. она не будет рассчитывать общее количество М и 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
...