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

4

1 回答 1

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")and =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
于 2011-12-15T09:55:55.867 回答