如何用vba制作具有两个分类轴的Excel图表
我在excel表格中有这样的数据如何用vba制作具有两个分类轴的Excel图表,vba,excel,Vba,Excel,我在excel表格中有这样的数据 Country Product Price America A 43 China B 13 Germany C 21 Turkey D 12 在excel中,我选择了这些数据,并用它们制作了一个类似这样的图表 Country Product Price America A 43 China B 13 Germany C 21 Turkey D 12 但问题是,当我用vba选择相同的数据并从vba中绘制图表时,结果
Country Product Price
America A 43
China B 13
Germany C 21
Turkey D 12
在excel中,我选择了这些数据,并用它们制作了一个类似这样的图表
Country Product Price
America A 43
China B 13
Germany C 21
Turkey D 12
但问题是,当我用vba选择相同的数据并从vba中绘制图表时,结果是
现在,我希望vba图表显示到分类轴,就像我们从excel中选择数据并绘制图表一样
简而言之,我希望vba图表根据数据自动调整
这是代码
Sub CreateChart()
Range("a1").Select
Selection.CurrentRegion.Select
myrange = Selection.Address
mysheetname = ActiveSheet.Name
Worksheets(1).Activate
'ActiveWindow.DisplayGridlines = False
' Add a chart to the active sheet.
ActiveSheet.ChartObjects.Add(125.25, 60, 301.5, 155.25).Select
Application.CutCopyMode = False
ActiveChart.ChartWizard _
Source:=Sheets(mysheetname).Range(myrange), _
Gallery:=xlColumnStacked, Format:=10, PlotBy:=xlRows, _
CategoryLabels:=1, SeriesLabels:=1, HasLegend:=1, _
Title:=charttitle, CategoryTitle:=chartcategory, _
ValueTitle:=chartvalue, ExtraTitle:=""
End Sub
它在Excel中非常简单。插入图表并选择图表数据时记录宏。记录器记录VBA步骤,并提供整洁的代码,无论何时执行,都可以执行相同的操作。例如,录音机给了我两行代码:
Sub Macro1()
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("A2:C5"), PlotBy:=xlColumns
End Sub
非常简单,不是吗?如果您只是想更新现有图表中的数据,更好的解决方案是更新它们。基本上,我会创建你想要的图表,并给它命名。(例如myLovelyChart)
或者,如果您确实想创建新图表,请仔细查看VBA中的
chartType
property()及其枚举(),它会根据数据范围自动定义格式
但是,您可以使用下面的代码来控制它
Chart(1).PlotBy = xlRows
或
你能加上你的密码吗?编辑您的帖子以包含它;)@R3uK请查看代码。在
ActiveChart.ChartWizard
中,只需将PlotBy:=xlRows
更改为PlotBy:=xlColumns
。代码ActiveSheet.Shapes.AddChart2(201,xlColumnClustered)。选择ActiveChart.SetSourceData:=Range(myrange)
有效。我想再问一件事。我如何在图表中对我的数据进行分组。例如,如果我在美国有两种产品,那么我希望它以这样的方式分组,即美国应该以两种产品出现一次。希望你理解@Jon Peltier。如果没有看到数据和图表,我不知道你到底想要什么。通常,您必须在数据中完成分组,而不是在图表中。代码ActiveSheet.Shapes.AddChart2(201,xlColumnClustered)。选择ActiveChart.SetSourceData:=Range(myrange)
有效。我想再问一件事。我如何在图表中对我的数据进行分组。例如,如果我在美国有两种产品,那么我希望它以这样的方式分组,美国应该出现一次两种产品。希望您理解@Vimalraj Selvam。将PlotBy
明确添加到设置资源数据中是一个好主意,不要依赖默认值(我编辑了答案以反映这一点)。
Chart(1).PlotBy = xlColumns