FLUX数据后处理,使用VBA在EXCEL中批量插入插入散点图

2018-12-10  本文已影响0人  伟1818

FLUX数据后处理,使用VBA在EXCEL中批量插入插入散点图


Sub ChartsInsert()
Dim num As Integer
num = 1900
  '定义数据量
For Each sh In Worksheets
    '遍历工作表,寻找A1单元格为"Labels"的表
    If sh.Range("A1").Value = "Labels" Then
    Worksheets("CHARTS").Select
    '激活"CHARTS"表插入图表,
    Worksheets("CHARTS").Shapes.AddChart.Select
    '用With语句省略重复书写ActiveChart对象代码,ActiveChart代表上一行中被选中的新插入图表
    With ActiveChart
        'CharType是图表类型属性,xlXYScatter代表散点图xlXYScatterSmoothNoMarkers
        .ChartType = xlXYScatterSmoothNoMarkers
       'SeriesCollection代表图表系列对象集合,NewSeries方法表示新增图表系列,相当于图表数据源对话框中的“添加数据系列”
        Dim XV, YV, NAME, COL As String
        XV = sh.NAME + "!$B$2:$B$" + LTrim(Str(num))
        Dim i As Integer
        '遍历工作表的列,第一列为空,第二列为时间,其余列为数据,为每一列添加曲线系列
        For i = 3 To sh.Range("IV1").End(xlToLeft).Column
        .SeriesCollection.NewSeries
        'SeriesCollection(i)代表新插入的第i个数据系列,Name是数据系列名称,这和图表数据源对话框中的“系列名称”是一样的。
        'Chr()函数功能在于把代码开头的i所代表的数字换成A-Y字母列名,LTrim()去掉字符串左侧的空格
         If i < 27 Then
            COL = Chr(64 + i)
        Else
            COL = Chr(64 + CInt(i / 26)) + Chr(64 + (i Mod 26))
        End If
        YV = sh.NAME + "!$" + COL + "$2:$" + COL + "$" + LTrim(Str(num))
        NAME = "=" + sh.NAME + "!$" + COL + "$1"
        .SeriesCollection(i - 2).NAME = NAME
        .SeriesCollection(i - 2).XValues = XV
        .SeriesCollection(i - 2).Values = YV
        .ChartTitle.Text = "Chart of " + sh.NAME
        Next
End With
    End If
Next
'以下代码实现图表纵向排开效果
With Worksheets("CHARTS")
    'ChartObjects是所有图表类对象集合,Left属性代表图表距离Excel编辑界面上边界距离,这里以集合形式将所有图表的Left属性设置为0
    .ChartObjects(1).Top = 0
    .ChartObjects.Left = 0
.ChartObjects.Height = 400
.ChartObjects.Width = 1000
    'Height代表图表的宽度,因为每张图表宽度都是一样的,如将图表纵向排开的话,则从第二个图表开始,Left属性值应该是上一张图表的高度Height与上一张图表序号(j-1)之乘积。因图表高度相同,故可以直接使用ChartObjects(1).Height(第一张图表的高度)
    For j = 2 To .ChartObjects.Count
        .ChartObjects(j).Top = .ChartObjects(1).Height * (j - 1)
    Next
End With
End Sub

上一篇下一篇

猜你喜欢

热点阅读