简体   繁体   English

使用宏创建图

[英]create graph using macro

1) Question 1)问题

I want to use the macro for my raw data arrangement, my raw data is in many .xls files in a folder, all in arrangement like bellow: 我想将宏用于原始数据排列,我的原始数据位于文件夹中的许多.xls文件中,所有排列都像下面这样:

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

I need to arrange each column in different sheets in 1 .xls file, like this 我需要将每一列安排在1个.xls文件的不同工作表中,如下所示

data (sheet1) data (sheet2) untill blank... column A column B untill blank... 数据(sheet1)数据(sheet2)直到空白... A列直到空白... B列

2) Question is I need to loop this macro for easy to create graph... really appriciated the help 2)问题是我需要循环此宏以便于创建图形...真的很实用

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"

You can loop through characters by converting ascii codes using Chr(). 您可以通过使用Chr()转换ASCII代码来遍历字符。 Chr(64) = 'A', Chr(65) = 'B' etc... 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM