无法让VBA脚本创建所需的图表

时间:2016-05-17 08:15:03

标签: vba excel-vba excel

如下图所示,我手动创建了一个图表(左侧)。我在右侧创建了使用以下VB脚本创建的图表:

Sub StackedBarChart()
'
' StackedBarChart Macro
' 
'       
    Range(ActiveCell, Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column)).Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlColumnStacked
    ActiveChart.PlotBy = xlColumns
    ActiveChart.SetElement (msoElementDataLabelCenter)
    ActiveChart.SeriesCollection("Total").Format.Fill.Visible = msoFalse

End Sub

enter image description here

我的宏观不足之处在于以下几个方面:

  • 我需要将“Total”数据标签设置为InsideBase
  • 我需要重新缩放y轴。但是,这需要适用于任何数据集。因此,例如,获取最高总价值并为其增加2.5美元,以使其成为一个不错的图表。
  • 自动确保图例上的所有数据标签都显示出来。现在,只有4-12人出现。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

使用

Range(ActiveCell, Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column)).Select

您选择整行,包括总计。因此,在堆积图表的顶部,您可以再次获得总值,因此这会使高值翻倍。

(这里我不太确定)

 ActiveChart.SeriesCollection("Total").Format.Fill.Visible = msoFalse

你只是压制'Total'堆栈的显示。试着对这一行进行评论,我想说你会得到另一个元素。

您可能做的最好的事情是在录制宏并检查那里的语句时手动重做图表。

对于图例,您可能需要增加显示区域的大小。

你可以在背景中以100%过度的方式拖累一个看不见的堆栈。然后应显示值,但不显示任何条形。