【发布时间】:2015-03-06 19:24:53
【问题描述】:
我正在使用两个 Excel 2013 工作簿选项卡:“指标”和“图表日期”。 Metrics 工作表包含八个图表以及通过其他工作表输入的数据。 Chart Data 工作表包含从 Metrics 选项卡接收的数据行(连续每周一行)。我的问题是我试图弄清楚如何获取图表数据工作表中的数据行并运行一个每周更新它的宏(比如下周将 32 更改为 33,然后下周更改为 34,并且以此类推,每次更新 Metrics 选项卡时。我还需要能够更新图表。这是我目前拥有的代码:
Sub UpdateChartData()
'Appends the new data from the "Metrics" tab of workbook to the Chart Data tab, appending a new row for each week.
Sheets("Chart Data").Select
Range("A32").FormulaR1C1 = "=R[-1]C+7" 'Adds 7 days to the previous week's date.
Range("B32").FormulaR1C1 = "=Metrics!R[-30]C[1]"
Range("C32").FormulaR1C1 = "=Metrics!R[-29]C"
Range("D32").FormulaR1C1 = "=Metrics!R[-18]C[-1]"
Range("E32").FormulaR1C1 = "=Metrics!R[-8]C[-2]"
Range("H32").FormulaR1C1 = "=R[-1]C+7" 'Adds 7 days to the previous week's date.
Range("J32").FormulaR1C1 = "=Metrics!R[-29]C[-6]"
Range("K32").FormulaR1C1 = "=Metrics!R[-18]C[-7]"
Range("L32").FormulaR1C1 = "=Metrics!R[-8]C[-8]"
Range("N32").FormulaR1C1 = "=R[-1]C+7"'Adds 7 days to the previous week's date.
Range("P32").FormulaR1C1 = "=Metrics!R[-30]C[-11]"
Range("Q32").FormulaR1C1 = "=Metrics!R[-18]C[-12]"
Range("R32").FormulaR1C1 = "=Metrics!R[-8]C[-13]"
Range("T32").FormulaR1C1 = "=R[-1]C+7" 'Adds 7 days to the previous week's date.
Range("U32").FormulaR1C1 = "=Metrics!R[-30]C[17]"
Range("V32").FormulaR1C1 = "=Metrics!R[-29]C[16]"
Range("W32").FormulaR1C1 = "=Metrics!R[-18]C[15]"
Range("X32").FormulaR1C1 = "=Metrics!R[-8]C[14]"
Range("AA32").FormulaR1C1 = "=R[-1]C+7" 'Adds 7 days to the previous week's date.
Range("AB32").FormulaR1C1 = "=Metrics!R[-30]C[13]"
Range("AC32").FormulaR1C1 = "=Metrics!R[-29]C[12]"
Range("AD32").FormulaR1C1 = "=Metrics!R[-18]C[11]"
Range("AE32").FormulaR1C1 = "=Metrics!R[-8]C[10]"
Range("AH32").FormulaR1C1 = "=R[-1]C+7" ' Adds 7 days to the previous week's date.
Range("AI32").FormulaR1C1 = "=Metrics!R[-30]C[-25]"
Range("AJ32").FormulaR1C1 = "=Metrics!R[-29]C[-26]"
Range("AK32").FormulaR1C1 = "=Metrics!R[-18]C[-27]"
Range("AL32").FormulaR1C1 = "=Metrics!R[-8]C[-28]"
Range("AO32").FormulaR1C1 = "=R[-1]C+7" 'Adds 7 days to the previous week's date.
Range("AP32").FormulaR1C1 = "=Metrics!R[-30]C[-15]"
Range("AQ32").FormulaR1C1 = "=Metrics!R[-29]C[-16]"
Range("AR32").FormulaR1C1 = "=Metrics!R[-18]C[-17]"
Range("AS32").FormulaR1C1 = "=Metrics!R[-8]C[-18]"
Range("AV32").FormulaR1C1 = "=R[-1]C+7" 'Adds 7 days to the previous week's date.
Range("AW32").FormulaR1C1 = "=Metrics!R[-30]C[-24]"
Range("AX32").FormulaR1C1 = "=Metrics!R[-29]C[-25]"
Range("AY32").FormulaR1C1 = "=Metrics!R[-18]C[-26]"
Range("AZ32").FormulaR1C1 = "=Metrics!R[-8]C[-27]"
UpdateCharts
End Sub
'############################################# ##############################
Sub UpdateCharts()
' Updates the charts based on the data that was updated in the "Chart Data" tab for given week.
Sheets("Metrics").Select
ActiveSheet.ChartObjects("Chart 8").Activate
ActiveChart.SetSourceData Source:=Sheets("Chart Data").Range("A1:F32")
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.SetSourceData Source:=Sheets("Chart Data").Range("H2:L32")
ActiveSheet.ChartObjects("Chart 2").Activate
ActiveChart.SetSourceData Source:=Sheets("Chart Data").Range("N2:R32")
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.SetSourceData Source:=Sheets("Chart Data").Range("T2:Y32")
ActiveSheet.ChartObjects("Chart 7").Activate
ActiveChart.SetSourceData Source:=Sheets("Chart Data").Range("AV2:BA32")
ActiveSheet.ChartObjects("Chart 6").Activate
ActiveChart.SetSourceData Source:=Sheets("Chart Data").Range("AO2:AT32")
ActiveSheet.ChartObjects("Chart 5").Activate
ActiveChart.SetSourceData Source:=Sheets("Chart Data").Range("AH2:AM32")
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.SetSourceData Source:=Sheets("Chart Data").Range("AA2:AF32")
End Sub
任何建议将不胜感激。谢谢。
【问题讨论】: