Захватите разницу в потоковых данных каждые 5 минут - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть лист потоковой передачи, который получает все данные.Сделал еще один лист под названием Workarea, куда эти данные копируются с использованием = Streaming!B1 и так далее.Теперь мне нужна одна разница значений столбцов каждые 5 минут.Значение продолжает расти и начинается с 0 каждое утро.Будет хотеть добавить еще 5 минут листа и получить разницу там.Всего клеток 98 B1: B98.Я попробовал команду xlspecialpaste, но она вычитает место назначения из скопированных ячеек и дает отрицательное значение.Также копирует формулу, чтобы данные постоянно менялись в соответствии с исходными потоковыми данными.Спасибо

Это то, что у меня есть.

Option Explicit 
Public dTime As Date 

Sub ValueStore() 
Dim nr As Long 
With Worksheets("Sheet1") 
.Range("B1:B98").Copy 
.Range("C1:C98").PasteSpecial _ Operation:=xlPasteSpecialOperationSubtract 
End With 

Call StartTimer 

End Sub 

Sub StartTimer() 
dTime = Now + TimeValue("00:05:00") 
Application.OnTime dTime, "ValueStore", Schedule:=True 
End Sub 

Sub StopTimer() 
On Error Resume Next 
Application.OnTime dTime, "ValueStore", Schedule:=False 
End Sub

1 Ответ

0 голосов
/ 20 февраля 2019

Если я вас правильно понимаю, у вас есть формула в столбце B, которая обновляется все время, и вы хотите «снимок» значений каждые 5 минут.

Для этого вы можете просто использовать range(destinationRange).Value = range(sourceRange).Value

Чтобы выполнить вычисление, простой цикл выполнит хитрость:

With Worksheets("Sheet1")
Dim i as Long
     For i = 1 to 98
         If IsNumeric(.Cells(i,3).Value) then
            .Cells(i,3).Value = .Cells(i,2).Value - .Cells(i,3).Value
         Else
            .Cells(i,3).Value = .Cells(i,2).Value
         End If
     Next
End With

Вместо копирования диапазона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...