在Excel中通过vb.net从不相邻的列分散图表

时间:2018-06-28 15:10:43

标签: excel vb.net charts scatter

我正在尝试通过vb.net代码在excel电子表格中绘制图表。 我想从A列(X轴)和D列(Y轴)绘制散点图。到目前为止,在一些在线帮助下,我已经编写了以下代码:

Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
xlApp = New Excel.Application

xlWorkBook = xlApp.Workbooks.Open("C:\excel_file.xlsx")

    xlApp.Visible = True

    xlWorkSheet = xlWorkBook.Sheets("Foglio4")

    With xlWorkSheet

        .Shapes.AddChart.Select()

        With xlApp.ActiveChart

            .ApplyCustomType(Excel.XlChartType.xlXYScatterSmoothNoMarkers)

            xlApp.ActiveChart.SeriesCollection(1).Name = "X-Y"
            xlApp.ActiveChart.SeriesCollection(1).XValues = "='Foglio4'!$A$2:$A$1446"
            xlApp.ActiveChart.SeriesCollection(1).Values = "='Foglio4'!$D$2:$D$1446"

        End with

    End with

但是我得到了一个图表,其中包含我想要的系列以及其他四个系列,它们由X轴的A列和Y轴的所有其他列组成,因为我有五列。

为什么绘制所有这些系列?有想法吗?

1 个答案:

答案 0 :(得分:0)

由于蒂姆·威廉姆斯(Tim Williams)的宝贵评论,我将这一部分添加到了代码中:

[...]

xlApp.ActiveChart.SeriesCollection(1).Name = "X-Y"
xlApp.ActiveChart.SeriesCollection(1).XValues = "='Foglio4'!$A$2:$A$1446"
xlApp.ActiveChart.SeriesCollection(1).Values = "='Foglio4'!$D$2:$D$1446"

For n = .SeriesCollection.Count To 2 Step -1
    .SeriesCollection(n).Delete
Next n

[...]

这将删除所有不需要的系列,仅保留一个想要的系列,即#1。

相关问题