您好,我的代码有问题。代码的想法是从特定范围内的冷冻加热室中的两个/三个/四个检测器读取温度值。在48小时内,检测器在-35摄氏度至85摄氏度的范围内收集数据(整个数据范围的平均记录数接近13000行)。之后宏应绘制图表并将最终数据从图表复制到另一张纸上(在我的情况下是“ DataChart”)。但是在某些情况下,所选区域(如温度范围为-30至22的数据)必须记录很多,则会出现错误:“系列公式过长”。我知道在常规公式中可以写8196个字符。在vba中可以做同样的事情吗?或者,也许可以声明如果某些数据是一个接一个的,则不要像B1 B2 B3 B4那样逐个单元地取,而取范围B1:B4。 这是我的代码-在短距离内可以正常工作。
Sub Zakres1Czujnik1_24()
Dim rng As Range, cell As Range
Dim lRow As Long, i As Long
Dim ws As Worksheet
Dim Obj As ChartObject
Dim seria As Series
Dim NumberOfRows As Integer
Dim X As Object
Dim counter
counter = 1
Worksheets("DataChart").Columns(1).ClearContents
Set ws = ThisWorkbook.ActiveSheet
With ws
lRow = .Range("E" & .Rows.Count).End(xlUp).Row
For i = 1 To lRow
'!!!!!!!!!!!!!!!!!!!!!!ZMIENIĆ WARTOŚCI T2 i U2 w zależności od zakresu temperatury !!!!!!!!!!!!!!!
If .Range("E" & i).Value >= .Range("AH3").Value And _
.Range("E" & i).Value <= .Range("AI3").Value Then
If rng Is Nothing Then
Set rng = .Range("E" & i)
Else
Set rng = Union(rng, .Range("E" & i))
End If
End If
Next i
If Not rng Is Nothing Then
With .ChartObjects.Add(Left:=100, Width:=336, Top:=75, Height:=79)
.Chart.SetSourceData Source:=rng
.Chart.ChartType = xlLine
.Left = Range("M10").Left
.Top = Range("M10").Top
.Select
End With
End If
End With
NumberOfRows = UBound(ActiveChart.SeriesCollection(1).Values)
For Each X In ActiveChart.SeriesCollection
With Worksheets("DataChart")
.Range(.Cells(1, counter), _
.Cells(NumberOfRows + 1, counter)) = _
Application.Transpose(X.Values)
End With
counter = counter + 1
Next
ThisWorkbook.Sheets("DataChart").Cells.Replace What:="#N/A", Replacement:="", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
谢谢您的所有建议。