gpt4 book ai didi

excel - 如何纯粹通过excel vba编程创建堆积柱形图?

转载 作者:行者123 更新时间:2023-12-02 16:23:48 25 4
gpt4 key购买 nike

我正在尝试在 VBA 中创建一个堆积柱形图,其中有一个条形图,每个条形图显示图表上子类别的分割(参见图片右侧)。对于普通条形图,我所要做的就是创建一个新系列并设置 Values 和 XValues 属性。我不知道如何告诉它子类别的值。

alt text
(来源:msecnd.net)

最佳答案

启动此类任务的最简单方法是查看手动执行任务时会发生什么,使用宏记录器捕获 VBA 等效项。

比如我刚刚记录了这个(在Excel XP中,但以后的版本应该类似)。代码与记录的完全一样:

Option Explicit

Sub Macro1()
'
' Macro1 Macro
' Macro recorded 09/07/2010 by MW
'

'
Range("B4:D6").Select
Charts.Add
ActiveChart.ChartType = xlColumnStacked
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("B4:D6"), PlotBy:= _
xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
End Sub

从上面的内容来看,我想说第一行 Range("B4:D6").Select 是不需要的,因为它会在下面重复。

现在要清理一下。在这里,对象浏览器非常有用。如果您不熟悉,请尝试在 VBA 编辑器中按 F2。通过在上部下拉列表中选择“Excel”稍微缩小上下文范围,然后查看“类”列表中的“图表”。在“成员...”列表中选择添加会在下部 Pane 中显示以下内容:

Function Add([Before], [After], [Count]) As Chart
Member of Excel.Charts

因此 Charts.Add 返回一个 Chart,它必须是在代码的其余部分中重复引用的 ActiveChart。像这样的重复很乏味(并且可能会影响性能),所以我会稍微修改一下。为了便于练习,我们假设我们将在运行宏之前选择目标数据,因此当宏运行时它将位于 Selection 中。查看对象浏览器中 Chart 的成员,很明显 SetSourceData 中的 Source 应该是 Range。让我们试试这个:

Sub Macro1()
With Charts.Add
.ChartType = xlColumnStacked
.SetSourceData Source:=Selection, PlotBy:=xlRows
.Location Where:=xlLocationAsObject, Name:="Sheet1"
End With
End Sub

它在我的机器上不起作用 - 我认为激活图表时选择可能会发生变化。因此,我们应该在开始使用图表之前捕获范围:

Sub CreateStackedColumnChartFromSelection()
Dim src As Range
Set src = Selection
With Charts.Add
.ChartType = xlColumnStacked
.SetSourceData Source:=src, PlotBy:=xlRows
.Location Where:=xlLocationAsObject, Name:="Sheet1"
End With
End Sub

从那里,您应该能够找到各种自定义(记住对象浏览器!)以按照您想要的方式获取图表。 (请记住,根据您的 Excel 版本,可能有一些小功能无法通过 VBA 访问。)

关于excel - 如何纯粹通过excel vba编程创建堆积柱形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3209764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com