vba - 在 VBA 中使用平滑线编写散点图

标签 vba excel

我正在尝试使用带有 VBA 的平滑线来编写散点图。
我正在尝试从工作表中取出数据,并使用 VBA 在同一工作簿不同的工作表中创建一个带有线条且没有标记的散点图。

这是我的工作表的部分快照

enter image description here

A 列中低于 247 和 263 到 455 之间的值将在 B 列中具有相应的 -1.75。

x 值在 A1:A401 范围内

y 值在 B1:B401 范围内

我还想给我的图表加上标题,并标记 X 和 Y 轴。我无法弄清楚如何让 y 值与 x 值一起绘制,而不是在图表上制作两条单独的线。

这是我需要的图表

enter image description here

这是我使用的代码

Set xData = ThisWorkbook.Worksheets(2).Range("A1:A" & LastRow_this)
Set yData = ThisWorkbook.Worksheets(2).Range("B1:B" & LastRow_this)

Set GraphRange = Union(xData, yData)

'Create a chart
  Set cht = ThisWorkbook.Worksheets(1).Shapes.AddChart2

'Give chart some data
  cht.Chart.SetSourceData Source:=GraphRange

'Determine the chart type
  cht.Chart.ChartType = xlXYScatterLines

这就是它在 Excel 中给我的。

enter image description here

我怎样才能得到想要的结果?

另外,如果范围是动态的,我该怎么办?

最佳答案

你可以试试这样的...

Sub CreateChart()
Dim wsData As Worksheet, wsChart As Worksheet
Dim LastRow As Long
Dim xData As Range, yData As Range, GraphRange As Range
Dim cht As Shape

Application.ScreenUpdating = False

Set wsChart = Sheets(1)
Set wsData = Sheets(2)
LastRow = wsData.Cells(Rows.Count, 1).End(xlUp).Row
Set xData = ThisWorkbook.Worksheets(2).Range("A1:A" & LastRow)
Set yData = ThisWorkbook.Worksheets(2).Range("B1:B" & LastRow)

Set GraphRange = Union(xData, yData)

'Create a chart
Set cht = ThisWorkbook.Worksheets(1).Shapes.AddChart2(, xlXYScatterLinesNoMarkers)

'Give chart some data
cht.Chart.SetSourceData Source:=GraphRange
cht.Chart.FullSeriesCollection(1).Format.Line.Weight = 5
Application.ScreenUpdating = True
End Sub

enter image description here

关于vba - 在 VBA 中使用平滑线编写散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44361927/

相关文章:

vba - 使用 Excel 中的按钮将信息从一个工作表复制到另一个工作表的新行

excel - 如何设置图表 Axis 上的标签对齐方式?

Excel VBA遍历列以将非空白复制并粘贴到其他3列?

JavaScript (node js) 在读取 Excel 文件时跳过空单元格

javascript - Angularjs 数字过滤器无法与 ui 网格正常工作

c# - 使用C#将Excel数据导入DataGridView

vba - 将值写入用户窗体中的文本框 - VBA

vba - 返回表示工作表行的字符串的函数

vba - 如何在 Excel VBA 代码上设置固定边距(PDF 打印为 2 页而不是 1 页)

excel - 将所有对象移回excel VBA用户表单中的原始位置