• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

streaming gegevens

Status
Niet open voor verdere reacties.

badabing60

Gebruiker
Lid geworden
8 jun 2009
Berichten
18
Hallo,

ik heb in excel een verbinding waarbij streaming gegevens binnenkomen. nu wil ik dat in een bepaalde periode bijvoorbeeld een kwartier de laagste waarde en de hoogste waarde worden vastgelegd. weet niet hoe ik dit moet aanpakken. iemand een idee?

groeten

bada
 
bada,

Dat houd in dat je een timer moet laten lopen die een kwartier lang de streaming data analiseert en daaruit de hoogste en laagste waarde haalt en dit constant blijft doen totdat de timer is afgelopen dan de beide laagste en hoogste waarde wegschrijven en de timer resetten.

Misschien kun je een voorbeeld bestand plaatsen.
 
Beste Superzeeuw,

Dat klopt. De timer is denk ik voor mij niet het probleem. Waar ik mee zit is hoe ik de laagste en de hoogste waarde vasthoud.
Bijvoorbeeld in A1 zit de koppeling met de realtimestreamer. Dan moet in A2 de laagste waarde en in A3 de hoogste waarde worden bewaard in de tijd dat de timer actief is. Ik stel me voor dat als eerste de waarde van A1 in A2 en A3 wordt geplakt. Daarna moet er een vergelijking plaatsvinden waardoor in A2 de waarde van A1 wordt geplakt zodra die kleiner is dan die in A2. Idem in A3 maar dan hoger ipv kleiner. Die formule wil ik graag hebben maar krijg het zelf niet voor elkaar. Een voorbeeld bestand heb ik niet omdat alles afhangt van die formule.

Met Vriendelijke Groet,
Bada
 
bada,

Je kunt achter het werkblad een stukje code hangen die kijkt naar cel A1.
Wanneer de waarde van A1 verandert dat dan de vergelijking gaat plaatsvinden.
Vervolgens wegschrijven naar A2 of A3.

Zoiets:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$A$1" Then Exit Sub
    If [A2] = "" And [A3] = "" Then [A2] = [A1]: [A3] = [A1]
    If [A1] < [A2] Then [A2] = [A1]
    If [A1] > [A3] Then [A3] = [A1]
End Sub
 
Hallo Superzeeuw,

Ik denk dat dit niet gaat werken: het event Change werkt niet als de waarde in een cel wijzigt als gevolg van een wijziging in een van de broncellen van de formule in die cel (in dit geval dus cel A1). Het change-event reageert voor zo ver ik weet alleen op het wijzigen van de inhoud van een cel op basis van een <ENTER> in die cel (of celbereik).
Je zult dus aan de code nog het een en ander moeten toevoegen, waardoor er op basis van die code naar de inhoud van die cel wordt gekeken.
 
@ Thoralf,

Nooit uitgeprobeerd wat jij schrijft of een Change event ook functioneert bij een formule.

Maar op verzoek een andere code hierbij:
Code:
Sub HighLow()
    Do While Timer = 15 'Als de timer 15 minuten heeft gelopen dan stoppen
        If [A2] = "" And [A3] = "" Then [A2] = [A1]: [A3] = [A1]
        If [A1] < [A2] Then [A2] = [A1]
        If [A1] > [A3] Then [A3] = [A1]
        DoEvents
    Loop
End Sub
 
Laatst bewerkt:
Dank

Beste reageerders,

Dank voor de reacties. Ik ga hier binnenkort mee aan de slag en laat het weten als het werkt.

Groeten,
Bada
 
poging mislukt

ik heb een poging gewaagd met de aangedragen oplossing maar het werkt helaas niet. Doordat ik een loop gebruik om de vergelijking telkens opnieuw te maken worden de streaming gegevens niet meer bijgewerkt. Ik kan de macro alleen maar stoppen met esc. Dit is niet de oplossing. Eigenlijk moet de vergelijking alleen gemaakt worden op het moment dat de waarde van de bron verandert. Ik plak hier wat ik tot nu toe heb. Ben een leek dus er zal wel het nodige moeten veranderen.
Groeten
Bada

Sub future()
'
' future Macro
'
With Application
.ScreenUpdating = True
.DisplayAlerts = True


Starttime = Time

[N24] = "": [N25] = ""
[M24] = "": [M25] = ""
[L24] = "": [L25] = ""
[K24] = "": [K25] = ""
[J24] = "": [J25] = ""
[I24] = "": [I25] = ""
[H24] = "": [H25] = ""
[G24] = "": [G25] = ""
[F24] = "": [F25] = ""
[E24] = "": [E25] = ""
[D24] = "": [D25] = ""
[C24] = "": [C25] = ""
[B24] = "": [B25] = ""

Do
VULLEN:
If [B24] = "" And [B25] = "" Then [B24] = [B20]: [B25] = [B20]
If [B20] < [B24] Then [B24] = [B20]
If [B20] > [B25] Then [B25] = [B20]
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 2

waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime

If Time = Starttime + TimeValue("00:05:00") Then GoTo OPSCHUIVEN

Loop

OPSCHUIVEN:
[N24] = [M24]: [N25] = [M25]
[M24] = [L24]: [M25] = [L25]
[L24] = [K24]: [L25] = [K25]
[K24] = [J24]: [K25] = [J25]
[J24] = [I24]: [J25] = [I25]
[I24] = [H24]: [I25] = [H25]
[H24] = [G24]: [H25] = [G25]
[G24] = [F24]: [G25] = [F25]
[F24] = [E24]: [F25] = [E25]
[E24] = [D24]: [E25] = [D25]
[D24] = [C24]: [D25] = [C25]
[C24] = [B24]: [C25] = [B25]
[B24] = "": [B25] = ""
Starttime = Time
GoTo VULLEN
End With
'
End Sub
 
Laatst bewerkt:
Kijk eens of je bijgevoegd bestand kan aanpassen aan je wensen.
 

Bijlagen

  • Streaming.xls
    63,5 KB · Weergaven: 21
Dit is al een verbetering omdat ik in ieder geval wel m'n cursor kan gebruiken. Alleen wanneer dit programma loopt krijg ik geen streaming gegevens meer binnen. Waarschijnlijk omdat er een loop wordt gebruikt worden de gegevens van buitenaf niet gecontroleerd. Loopt de macro dan heb ik geen realtime gegevens. Stopt de macro dan weer wel.
Groeten
Bada
 
Bada,

Kun je het uitgeklede bestand hier posten en dan wel met de streaming code erin.
 
Beste Superzeeuw,

Ik ben hiermee een heel eind op weg. Het programma kopieert om de 5 minuten een regel.
Ik wil gedurende 5 minuten de hoogste en laagste stand vastleggen en vervolgens een kolom opschuiven zodat ik uiteindelijk een overzicht van een uur heb. Ik ga hiermee verder en heb goede hoop. Ben vanaf vandaag 2 weken elders, dus een vervolg moet even wachten.

Groeten,
Bada
 
Hallo,

Nog even op de valreep. Ik heb in plaats van 5 minuten 1 seconde ingegeven bij de door Superzeeuw aangedragen oplossing. Daardoor wordt iedere seconde de datastream ververst en de formule toegepast.
Werkt prima!

Allen Bedankt!

Bada
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan