2012-12-19 65 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