我在excel表中有这样的数据
Country Product Price
America A 43
China B 13
Germany C 21
Turkey D 12
在excel中,我选择这些数据并制作一个看起来像这样的图表
但问题是当我用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
答案 0 :(得分:0)
在Excel中非常简单。插入图表并选择图表数据时记录宏。录音机记录VBA步骤并为您提供整齐的代码,无论何时执行,它都可以执行相同的操作。例如,录音机给了我这两行代码:
Sub Macro1()
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("A2:C5"), PlotBy:=xlColumns
End Sub
很简单,不是吗?
答案 1 :(得分:0)
如果您只想更新现有图表中的数据,可以更好地解决这些问题。 Basicaly创建您想要的图表并为其指定一些名称。 (例如myLovelyChart)
Sub updateChartSO()
Dim chartSheet As Worksheet
Set chartSheet = Sheets("testSheet")
Dim chtSerie As Series
With chartSheet
For Each chtSerie In .ChartObjects("myLovelyChart").SeriesCollection
'specify your values, can be specified by array or even from sheet'
chtSerie.Values = ""
chtSerie.XValues = ""
Next
End With
End Sub
或者如果您真的想创建新图表,请仔细查看chartType
属性(https://msdn.microsoft.com/en-us/library/office/ff820803.aspx)及其枚举(https://msdn.microsoft.com/en-us/library/office/ff838409.aspx)
答案 2 :(得分:0)
在VBA中,它会根据数据范围自动定义格式。
但是,您可以使用以下代码来控制它
Chart(1).PlotBy = xlRows
OR
Chart(1).PlotBy = xlColumns