我期待爲我的同事開發一個工具,使用它可以自動生成堆積條形圖。我需要這個適用於任何大小的數據集,任何數量的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