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

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

作者: 伟1818 | 来源:发表于2018-12-10 01:16 被阅读0次

    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
    
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/hhmlhqtx.html