快速更改Excel图表参考

快速更改Excel图表参考,excel,excel-2010,vba,Excel,Excel 2010,Vba,嗨,我是新的网站,有什么我希望是一个简单的解决方案,我不能想出 我有一个工作簿,有10个相同的选项卡,每个选项卡上有不同的数据。我制作了一个新的选项卡,它引用了选项卡1来绘制我拥有的各种数据。我正在查看大约20个图形,现在我想在创建9个新选项卡的同时对其余9个选项卡进行相同的图形分析 我唯一能做的似乎是复制图表,然后更改每个图表中的数据源,这需要几个小时。是否有我遗漏的东西,或者是否有一个宏可以让这更容易 非常感谢您的回答。我以前一直忙于动态添加图表。这里有一个稍微修改过的片段,你可以随意处理。

嗨,我是新的网站,有什么我希望是一个简单的解决方案,我不能想出

我有一个工作簿,有10个相同的选项卡,每个选项卡上有不同的数据。我制作了一个新的选项卡,它引用了选项卡1来绘制我拥有的各种数据。我正在查看大约20个图形,现在我想在创建9个新选项卡的同时对其余9个选项卡进行相同的图形分析

我唯一能做的似乎是复制图表,然后更改每个图表中的数据源,这需要几个小时。是否有我遗漏的东西,或者是否有一个宏可以让这更容易


非常感谢您的回答。

我以前一直忙于动态添加图表。这里有一个稍微修改过的片段,你可以随意处理。为了简单起见,假设您的范围是当前图纸的A1:B20

Sub AddChart()
Dim ws as worksheet
For each ws in ThisWorkbook.Sheets
        'ADD CHART. . .
        ws.Shapes.AddChart.Select
        ActiveChart.SetSourceData Source:=ws.Range("A1:B20")

        'this makes the chart a certain size, fitted to a cell range.
        Dim RngToCover As Range
        Dim ChtOb As ChartObject
        Set RngToCover = ws.Range("c4:f8") 'chart will be the size of c4:f8
        Set ChtOb = ActiveChart.Parent
        ChtOb.Height = RngToCover.Height ' resize
        ChtOb.Width = RngToCover.Width ' resize
        ChtOb.Top = RngToCover.Top ' reposition
        ChtOb.Left = RngToCover.Left ' reposition


    'random other stuff I did with labels etc.
    ws.Unprotect
        ActiveChart.HasLegend = False
        ActiveChart.ChartTitle.Text = "Age Statistics"
        ActiveChart.SeriesCollection(1).ApplyDataLabels
    ws.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
            False, AllowSorting:=True

  'go to next worksheet
Next ws

其余9个图表应使用表1中的相同数据,否则它们中的每一个都将在新的表中有其自己的数据范围?我在表1中有20个图表用于数据,该表位于表11中。我有表2-10,需要相同的20个图表,将被放置在表12-20我会这样做,没有VBA。。。选择
Sheet1
Sheet11
,同时复制9次。每对新人都会保持适当的关系。将当前工作表2-10中的数据复制(或剪切/移动)到新的数据表中。我想你的工作大约需要5分钟。比创建任何宏都快得多:)