2012-12-19 66 views
1

1)问题创建使用宏

我想用宏为我的原始数据结构图, 我的原始数据是在很多.xls文件的文件夹中,全部安排像波纹管:

A1 ........空白 A(空白)---------空白

我需要在1个.xls文件在不同片材的每一列布置,这样

数据(sheet1)数据(sheet2)直到空白... col UMN A列B,直到空白......

2)问题是我需要循环这个宏很容易地创建图形...真的appriciated帮助

Sub Macro1() 
' 
' Macro1 Macro 
' 
' Keyboard Shortcut: Ctrl+g 

    ActiveSheet.Shapes.AddChart.Select 
    ActiveChart.ChartType = xlLine 
    ActiveChart.ApplyChartTemplate (_ 
     "C:\Users\bukharms\AppData\Roaming\Microsoft\Templates\Charts\analysis.crtx") 

    ActiveSheet.ChartObjects("Ambient").Activate 
    ActiveChart.SeriesCollection(1).Values = "='data'!$B$2:$B$298" 
    ActiveChart.SeriesCollection(1).Values = "='data (2)'!$B$2:$B$298" 
    ActiveChart.SeriesCollection(2).Values = "='data (3)'!$B$2:$B$261" 
    ActiveChart.SeriesCollection(3).Values = "='data (4)'!$B$2:$B$243" 
    ActiveChart.SeriesCollection(4).Values = "='data (5)'!$B$2:$B$265" 
    ActiveChart.SeriesCollection(5).Values = "='data (6)'!$B$2:$B$307" 
    ActiveChart.SeriesCollection(6).Values = "='data (7)'!$B$2:$B$728" 

ActiveSheet.Shapes.AddChart.Select 
    ActiveChart.ChartType = xlLine 
    ActiveChart.ApplyChartTemplate (_ 
     "C:\Users\bukharms\AppData\Roaming\Microsoft\Templates\Charts\analysis.crtx") 

    ActiveSheet.ChartObjects("Coolant Into Engine").Activate 
    ActiveChart.SeriesCollection(1).Values = "='data'!$C$2:$C$298" 
    ActiveChart.SeriesCollection(1).Values = "='data (2)'!$C$2:$C$298" 
    ActiveChart.SeriesCollection(2).Values = "='data (3)'!$C$2:$C$261" 
    ActiveChart.SeriesCollection(3).Values = "='data (4)'!$C$2:$C$243" 
    ActiveChart.SeriesCollection(4).Values = "='data (5)'!$C$2:$C$265" 
    ActiveChart.SeriesCollection(5).Values = "='data (6)'!$C$2:$C$307" 
    ActiveChart.SeriesCollection(6).Values = "='data (7)'!$C$2:$C$728" 

ActiveSheet.Shapes.AddChart.Select 
    ActiveChart.ChartType = xlLine 
    ActiveChart.ApplyChartTemplate (_ 
     "C:\Users\bukharms\AppData\Roaming\Microsoft\Templates\Charts\analysis.crtx") 

    ActiveSheet.ChartObjects("Coolant Out from Engine").Activate 
    ActiveChart.SeriesCollection(1).Values = "='data'!$D$2:$D$298" 
    ActiveChart.SeriesCollection(1).Values = "='data (2)'!$D$2:$D$298" 
    ActiveChart.SeriesCollection(2).Values = "='data (3)'!$D$2:$D$261" 
    ActiveChart.SeriesCollection(3).Values = "='data (4)'!$D$2:$D$243" 
    ActiveChart.SeriesCollection(4).Values = "='data (5)'!$D$2:$D$265" 
    ActiveChart.SeriesCollection(5).Values = "='data (6)'!$D$2:$D$307" 
    ActiveChart.SeriesCollection(6).Values = "='data (7)'!$D$2:$D$728" 
+0

您可以使用范围对象的'.end'属性来确定数据的结束位置。 – Pynner

回答

0

你可以通过转换ASCII字符循环使用Chr()的代码。 Chr(64)='A',Chr(65)='B'等...

For i = 1 To 4 
    ActiveSheet.ChartObjects(i).Activate 
    ActiveChart.SeriesCollection(1).Values = "='data'!$" & Chr(i + 65) & "$2:$" & Chr(i + 65) & "$298" 
    ActiveChart.SeriesCollection(1).Values = "='data (2)'!$" & Chr(i + 65) & "$2:$" & Chr(i + 65) & "$298" 
    'etc... 
    next i 
+0

这个想法是将coloumn B2中的系列数据填入空白的图表(没有更多的输入) – KOE

+0

因此而不是从1到4的For循环使它从1到Range(..)。End(xlLeft)。列 – Dan

+0

我应该把它放在哪里,是否在这里 For i = 1 To 4 --->将1改为Range(..)。End(xlLeft).Column ActiveSheet.ChartObjects(i).Activate ActiveChart .SeriesCollection(1).Values =“='data'!$”&Chr(i + 65)&“$ 2:$”&Chr(i + 65)&“$ 298” ActiveChart.SeriesCollection(1).Values = “='data(2)'!$”&Chr(i + 65)&“$ 2:$”&Chr(i + 65)&“$ 298” '等... 下一个我 – KOE