帮我编写一段VBA代码,在当前工作区中生成一个饼状图,统计C2到C9里的数据,并将数据划分到两个区间,0-30一个区间,31-100是另一个区间,放在G1-H2的表格里
时间: 2024-12-22 10:29:44 浏览: 270
在VBA中创建饼状图通常需要使用Excel的ChartObject对象。以下是一个示例代码片段,它会统计C2到C9范围内的数据并将它们分为两个区间,然后在G1-H2单元格区域生成一个饼状图:
```vba
Sub GeneratePieChart()
Dim ws As Worksheet
Set ws = ActiveSheet '假设是在当前工作表
Dim dataRange As Range
Set dataRange = ws.Range("C2:C9")
Dim total As Long
total = dataRange.Sum
Dim lowData As Range
Set lowData = dataRange.Resize(dataRange.Rows.Count, 1).Offset(0, 0)
lowData.Value = Application.WorksheetFunction.IIf(lowData < 31, "0-30", ">30")
Dim chartObj As ChartObject
Dim ser As Series
Dim i As Long
' 创建图表
Set chartObj = ws.ChartObjects.Add(Left:=ws.Cells(10, 10), Width:=400, Height:=300) '指定图表位置
Dim chart As Chart
Set chart = chartObj.Chart
' 统计每个区间的数值
For i = 1 To 2
If i = 1 Then
ser = chart.SeriesCollection.NewSeries
ser.Values = lowData.Offset(0, i - 1).Application.Subtotal(xlSum, lowData.Offset(0, i - 1))
Else
ser.Points.AddTotal
End If
ser.Name = "区间" & i
Next i
' 设置图表属性
chart.ChartType = xlPie
chart.HasTitle = True
chart.Title.Text = "数据分布"
' 显示百分比标签
chart.Axes(xlValue).TickLabels.NumberFormat = "%"
' 更新图表
chart.Refresh
' 保存数据区间的范围
ws.Range("G1:H2").CopyFromRecordset lowData
End Sub
```
运行这段代码后,会在G1-H2区域显示数据分组,并在图表中展示对应的数据分布。
阅读全文