Здравствуйте, у меня есть некоторые проблемы с моим кодом. Идея кода заключается в считывании значений температуры с двух / трех / четырех детекторов в камере с морозильной камерой в определенном диапазоне. Детекторы собирают данные в течение 48 часов в диапазонах от -35 градусов Цельсия до 85 градусов Цельсия (среднее количество записей для всего диапазона данных составляет около 13 тысяч строк). После этого макрос должен нарисовать диаграмму и, наконец, скопировать данные из диаграммы на другой лист (в моем случае это «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
Спасибо за все советы.