嗨,我是新站点,我希望是一个我无法弄清楚的简单解决方案。
我有一个工作簿,其中有 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