我期待为我的同事开发一个工具,使用它可以自动生成堆积条形图。我需要这个适用于任何大小的数据集,任何数量的Product
和任何数量的Part
。所以,我需要一个自动调整的VBA范围,我不知道该如何去做。自动生成带有动态范围的堆积条形图?
它需要做到以下几点:
- 注意到连续值的总和,并在最后一列日志它。
- 为每个行创建堆积条形图。
转到“选择数据”和“交换行和列”
打开的
Total
数据值No Fill
- 使得
Total
数据标签显示“内部基地” - 去除白通过改变Y轴的最大值,从堆积的条形图中获得空间。
我的问题有以下几点:
- 宏没有记录
Total
数据选择设置为无填充的记录。我应该怎么做只为Total
数据点? - 如何使用VBA切换行和列?
- 然后最后,我不知道如何使这个宏适用于任何大小的数据集?
这里是我一直在练习的样本数据集: https://docs.google.com/spreadsheets/d/19n_UH2fJxomur13G_I89WRaqW93KH6Z0FIpUOzsciyE/edit#gid=0
这里是这是宏观创建时,我手动:
Sub StackedBar1()
'
' StackedBar1 Macro
'
'
Range("G2").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-5]:RC[-1])"
Range("G3").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-5]:RC[-1])"
Range("G4").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-5]:RC[-1])"
Range("A1:G4").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("'Sheet3'!$A$1:$G$4")
ActiveChart.ChartType = xlColumnStacked
ActiveChart.SetSourceData
ActiveChart.SetElement (msoElementDataLabelCenter)
ActiveChart.SeriesCollection(6).Select
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.SeriesCollection(6).DataLabels.Select
ActiveSheet.ChartObjects("Chart 4").Activate
Selection.Position = xlLabelPositionInsideBase
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.Axes(xlValue).Select
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.Axes(xlValue).MaximumScale = 14
ActiveChart.Axes(xlValue).MaximumScale = 8
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.ChartArea.Select
End Sub
如果使用花在这篇文章中分析的时间并改进你的记录代码,你会发现它是如何工作的,应该想出一个可能的解决方案来解决你的问题。你所要求的并不是如此诚实地显示具体问题,如果我要回答这个问题,我不知道该从哪里开始。先尝试缩小你的问题。 – L42
感谢您的评论,我现在同意你的意见。在VBA中,我只想选择'Total'列,然后用'No Fill'格式化它? – Gary
Nevermind - 我这样做:ActiveChart.SeriesCollection(“Total”)。选择' – Gary