gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:16:20 25 4
gpt4 key购买 nike

我正在尝试在 VBA 中创建一个宏,它将在 Sheet1 中获取一个大型数据集(称为原始数据),并为另一个工作表中的每 8000 个数据点创建一个 XY 散点图。宏还需要用它所代表的范围(即 1-8000、8001-16000 等)标记每个图形。

大型数据集包括来自 8 个不同热电偶的温度读数,这些热电偶每秒记录数据。数据点的数量将根据实验运行的时间长短而有所不同。温度值存储在 C 到 J 列中,时间参数存储在 T 列中。

我现在拥有的是一种“批处理”方法,其中宏被设置为以 8000 到 32000 的 block (4 个不同的图)绘制数据。这种方法不实用,因为数据集几乎总是显着大于 32000 个点。

我希望宏做的是自动绘制并标记每 8000 个数据点,直到没有更多数据可供绘制。

我一直在研究使用循环,但我是编写代码的新手,不知道如何。

非常感谢任何建议或帮助!

这是我的一些批处理代码:

'creates graph for first 8000 seconds in TC 1

Sheets("TC 1").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "='Raw Data'!$C$1"
ActiveChart.SeriesCollection(1).XValues = "='Raw Data'!$t$2:$t$8000"
ActiveChart.SeriesCollection(1).Values = "='Raw Data'!$C$2:$C$8000"

With ActiveChart

'X axis name
.axes(xlCategory, xlPrimary).HasTitle = True
.axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Time (seconds)"
'y-axis name
.axes(xlValue, xlPrimary).HasTitle = True
.axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Temperature (F)"

'chart title
.HasTitle = True
.ChartTitle.Text = ("1-8000 seconds")
'adjusts the size/placement of graph and x-axis values
Set RngToCover = ActiveSheet.Range("A1:T25")
Set ChtOb = ActiveChart.Parent
ChtOb.Height = RngToCover.Height ' resize
ChtOb.Width = RngToCover.Width ' resize
ChtOb.Top = RngToCover.Top ' repositon
ChtOb.Left = RngToCover.Left ' reposition
ActiveChart.axes(xlCategory).Select
ActiveChart.axes(xlCategory).MinimumScale = 0
ActiveChart.axes(xlCategory).MaximumScale = 8000

End With

最佳答案

这是我想出的。

宏计算使用的总行数,然后将该数字除以 8000。

For...Next 循环从 0 运行到总行数除以 8000。

Dim i As Integer
Dim j As Variant
Dim p As Integer
Dim start_row As Long
Dim end_row As Long
Dim RngToCover As Range
Dim ChtOb As ChartObject

i = Worksheets("Raw Data").UsedRange.Rows.Count
j = i / 8000

Sheets("TC 1").Activate

For p = 0 To j

start_row = (p * 8000) + 2
end_row = ((p + 1) * 8000) + 1

Set ChtOb = ActiveSheet.ChartObjects.Add(Left:=20, Width:=800, Top:=20, Height:=250)

ChtOb.Chart.ChartType = xlXYScatterSmoothNoMarkers
ChtOb.Activate

With ActiveChart.SeriesCollection.NewSeries
.Name = Worksheets("Raw Data").Cells(1, 3)
.XValues = Worksheets("Raw Data").Range(Worksheets("Raw Data").Cells(start_row, 20), Worksheets("Raw Data").Cells(end_row, 20))
.Values = Worksheets("Raw Data").Range(Worksheets("Raw Data").Cells(start_row, 3), Worksheets("Raw Data").Cells(end_row, 3))

End With
Next

关于vba - 使用 VBA 循环从大型数据集中创建多个图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24251434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com