VBA使用多个数据序列创建xy散点图

帕特里克·米瑞克

我正在尝试使用VBA在其自己的工作表上创建xy散点图。我有两组数据要使用。当我第一次运行下面显示的代码时(即当不存在“功率图表”时),它将正确绘制数据。但是,当我重新运行带有“ Power Chart”的代码时,又出现了3个附加系列,其中两个包含空白数据,一个仅包含y值,对应于工作表中的最后一列。然后,当我第三次运行代码时,我再次获得正确的绘图。继续重新运行我的代码会重复执行好图->坏图->好图的循环。关于什么原因的任何想法?

Sub CreatingChartOnChartSheet()

Dim ch As Chart

Dim xrng As Range
Dim yrng1 As Range
Dim yrng2 As Range

Set ch = Charts.Add
Set xrng = Sheets("Power").Range("A2:A65536")
Set yrng1 = Sheets("Power").Range("D2:D65536")
Set yrng2 = Sheets("Power").Range("E2:E65536")

With ch

    ' If there is a previous chart, delete it
    For Each Chart In ActiveWorkbook.Charts
    If Chart.Name = "Power Chart" Then
        Application.DisplayAlerts = False
        Charts("Power Chart").Delete
        Application.DisplayAlerts = True
    End If
    Next Chart        
    
    .SeriesCollection.NewSeries
    .SeriesCollection(1).Name = "=""Series 1"""
    .SeriesCollection(1).XValues = xrng    
    .SeriesCollection(1).Values = yrng1
    
    .SeriesCollection.NewSeries
    .SeriesCollection(2).Name = "=""Series 2"""
    .SeriesCollection(2).XValues = xrng
    .SeriesCollection(2).Values = yrng2
    
    .SetElement (msoElementChartTitleAboveChart)
    .Name = "Power Chart"
    .ChartTitle.Text = "Power"
    .SetElement (msoElementLegendRight)
    .Axes(xlCategory, xlPrimary).HasTitle = True
    .Axes(xlCategory, xlPrimary).AxisTitle.Text = "Time (h)"
    .Axes(xlValue, xlPrimary).HasTitle = True
    .Axes(xlValue, xlPrimary).AxisTitle.Text = "Power (kW)"
    '.Axes(xlCategory).MajorUnit = 1
    '.Axes(xlCategory).MinorUnit = 1
    
End With

End Sub
蒂姆·威廉姆斯

如果在工作表上选择了数据的情况下插入图表表或图表对象,则图表将自动绘制所选数据。每当通过VBA添加图表时,最好先删除任何已自动添加的系列。

Sub CreatingChartOnChartSheet()

    Dim xrng As Range
    Dim yrng1 As Range
    Dim yrng2 As Range
    
    With Sheets("Power")
        Set xrng = .Range("A2:A65536")
        Set yrng1 = .Range("D2:D65536")
        Set yrng2 = .Range("E2:E65536")
    End With

    Application.DisplayAlerts = False
    On Error Resume Next
    Charts("Power Chart").Delete
    On Error GoTo 0
    Application.DisplayAlerts = True
    
    With Charts.Add
        'remove any auto-plotted data
        Do While .SeriesCollection.Count > 0
            .SeriesCollection(1).Delete
        Loop
        
        With .SeriesCollection.NewSeries
            .Name = "Series 1"
            .XValues = xrng
            .Values = yrng1
        End With
        
        With .SeriesCollection.NewSeries
            .Name = "=""Series 2"""
            .XValues = xrng
            .Values = yrng2
        End With
        
        .SetElement msoElementChartTitleAboveChart
        .Name = "Power Chart"
        .ChartTitle.Text = "Power"
        .SetElement (msoElementLegendRight)
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Text = "Time (h)"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Text = "Power (kW)"
        '.Axes(xlCategory).MajorUnit = 1
        '.Axes(xlCategory).MinorUnit = 1
        
    End With

End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VBA 创建多个数据透视表

来自分类Dev

使用R中的两个数据集创建散点图

来自分类Dev

绘制多个数据子集的散点图

来自分类Dev

使用循环创建多个数据帧

来自分类Dev

使用VBA更改XY散点图中的水平轴标签

来自分类Dev

在python中使用ggplot绘制一个具有多个数据帧的散点图

来自分类Dev

如何使用pyplot为两个数据类创建散点图?

来自分类Dev

HoverTool用于散景散点图中的多个数据系列

来自分类Dev

在散点图中标准化的多个数据集

来自分类Dev

使用循环在R中创建多个数据帧

来自分类Dev

使用集合m中的每个数据创建多个线程

来自分类Dev

如何使用多种功能创建多个数据框

来自分类Dev

使用dfList在多个数据框中创建新列

来自分类Dev

熊猫使用for循环创建多个数据框

来自分类Dev

使用Spring JDBC创建多个数据库或架构

来自分类Dev

java:如何使用.txt中的数据创建多个数组

来自分类Dev

使用 lapply 在多个数据框上创建新变量

来自分类Dev

使用单个数据集创建多个饼图

来自分类Dev

使用嵌套的 lapply 过滤条件并创建多个数据框

来自分类Dev

如何使用python从数据帧创建多个熊猫时间序列?

来自分类Dev

使用循环从多个数据帧的列中创建单个数据帧

来自分类Dev

在R中使用两个数据帧的散点图矩阵

来自分类Dev

使用序列化程序将多个数据添加到模型中

来自分类Dev

Excel XY(散点图)图表每个单元格使用多个值

来自分类Dev

使用VBA循环从大型数据集创建多个图形

来自分类Dev

如何使用Python Pandas使用同一数据库创建多个数据框

来自分类Dev

Python从多个数据框创建组合

来自分类Dev

循环创建多个数据框

来自分类Dev

循环创建多个数据框

Related 相关文章

热门标签

归档