Berekeningen op een variabele cel in Excel

Status
Niet open voor verdere reacties.

e dentifier

Gebruiker
Lid geworden
16 aug 2008
Berichten
10
Beste lezer,

Ik zit het met volgende probleem:

In Excel heb ik een cel die dmv een query constant veranderd (de waarden gedragen zich als een variabele sinus).
Op deze cel moeten een aantal berekeningen worden toegepast, met als resultaat een I of een 0 (of iets in die trend). Dit resultaat moet dan een actie triggeren.

Op de cel moet de volgende berekening worden toegepast:
- als waarde 5% zakt (tussen begin en huidige waarde) wachten tot laagste punt, daarna actie I bij stijging van 1% vanaf laagste waarde.
- als waarde 5% stijgt wachten tot hoogste punt bereikt is, en na een daling van 1% na hoogste waarde overgaan tot actie 0

De gebruikte percentages zijn ook weer afhankelijk van een een variabele bron, die positieve of negatieve percentages geeft. De percentages kunnen veranderen.

Dit proces moet dan doorlopend zijn.
Er is dus maar 1 cel met een veranderende waarde waar mee real-time gerekend moet worden. Een tweede cel die de percentages aanstuurt moet er uiteindelijk ook nog komen.

Kan ik het beste excel gebruiken voor dit probleem?
Hoe zal de functie er ongeveer uit komen te zien?

Alvast bedankt voor het meedenken.
 
vragen : wordt die begin waarde ook ergens bewaard? of wordt die steeds geupdate?
 
Denk dat je hier wel een eind mee verder komt.

Zoals je in je eigen vraag al aangaf is het merendeel met 'als dit ... dan dat ...' ook in je code terug te vinden. Je kan dit niet met formules in Excel zelf oplossen omdat excel niet met kringverwijzingen (cellen met formules die van andere cellen afhankelijk zijn) om kan gaan.

In Excel VBA starten (ALT-F11) en deze code invoeren bij 'ThisWorkbook'. Je variable waarde kan handmatig worden aangepast op cel A2. Mocht het niet lukken laat het even weten dan stuur ik je de excelsheet wel even.

Succes met je aandelen.. :thumb:

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Target.Address("$B$2") <> "" Then

If Target.Address = "$A$2" Then '(als het adres van de cel A2 is dan ...)

If Cells(2, 3) < Cells(2, 1) Then Cells(2, 3) = Cells(2, 1) '(bij huidige waarde hoger dan hoogste waarde, aanpassen aub)
If Cells(2, 4) > Cells(2, 1) Then Cells(2, 4) = Cells(2, 1) '(bij huidige waarde lager dan laagste waarde, aanpassen aub)

Dim PercBerekening
PercBerekening = ((Cells(2, 1) - Cells(2, 2)) / Cells(2, 2)) * 100 '(berekening van percentage vanaf beginwaarde)

Cells(2, 5) = PercBerekening
If Cells(2, 5) > 0.05 Then '(als percentage groter is als 5%)

Dim BovenDeEen
BovenDeEen = ((Cells(2, 3) - Cells(2, 1)) / Cells(2, 3) * 100) '(verschil berekenen in procenten tussen hoogste en huidige waarde)

If BovenDeEen > 1 Then '(als het verschil tussen huidig en hoogste waarde groter is als 1%)
MsgBox "waarde na hoogste waarde is gezakt tot onder de 1%" & vbCrLf & vbCrLf & Format(BovenDeEen / 100, "0.00%"), vbOKOnly, "Actie 0"
End If
 
End If '(einde If groter als 5%)

If Cells(2, 5) < -0.05 Then '(als percentage kleiner is als -5%)

Dim BenedenDeEen
BenedenDeEen = ((Cells(2, 1) - Cells(2, 4)) / Cells(2, 4) * 100) '(verschil berekenen in procenten tussen laagste en huidige waarde)

If BenedenDeEen > 1 Then '(als het verschil tussen huidig en laagste waarde groter is als 1%)
MsgBox "waarde na laagste waarde is gestegen tot boven de 1%" & vbCrLf & vbCrLf & Format(BenedenDeEen / 100, "0.00%"), vbOKOnly, "Actie 1"
End If
 
End If '(einde If kleiner als -5%)

End If '(einde If adres A2)

End If

End Sub

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
'opmaak worksheet
  Range("A1:E1") = Split("Var Waarde|Begin Waarde|Hoogste Waarde|Laagste Waarde|% t.o.v. Begin", "|")
  Range("A2:D2") = 50
End Sub

mvg. Pizara
 
Laatst bewerkt:
@pizara

suggestie
Code:
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
  Range("A1:E1") = split("Var Waarde|Begin Waarde|Hoogste Waarde|Laagste Waarde|% t.o.v. Begin","|")
  Range("A2:D2") = 50 
End Sub
 
ben niet zo into Excel VBA... maar thanks zo leer ik weer eens wat.
 
Top...bedankt voor jullie hulp :thumb:

Ben nogal een newbie met vba, het lukte me dan ook niet helemaal om het script werkend te krijgen. Ik heb hem in de map gedaan in VBA wat je zei Pizara, alleen kreeg ik geen beeld op de excel sheet.

Is het trouwens mogelijk om van een Java pagina (waar je moet inloggen) een waarde te pakken en in Excel te doen?
 
Stond nog een klein foutje in. Heb het nu aangepast. Je moet trouwens als je het erin geplakt hebt. het worksheet even saven en opnieuw openen. Dan zou ie automatisch moeten starten.
 
Hij wil nog steeds niet werken, ondanks dat ik hem gesaved heb en opnieuw opgestart.
Maakt het misschien uit dat ik Excel 2007 heb?
Zou je misschien het bestand kunnen mailen?

Iig geval bedankt voor je moeite.
 
Laatst bewerkt:
Hiermee kan het ook

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Target.Address = "$A$2" Then 
  If Cells(2, 3) < Cells(2, 1) Then Cells(2, 3) = Cells(2, 1)
  If Cells(2, 4) > Cells(2, 1) Then Cells(2, 4) = Cells(2, 1) 

  If Cells(2, 1)  / Cells(2, 2)  > 1.05 and Cells(2, 3) / Cells(2, 3)>1 Then
     MsgBox "waarde na hoogste waarde is gezakt tot onder de 1%" & vbCr & vbCr & Format(Cells(2, 3) / Cells(2, 3), "0.00%"), , "Actie 0"
  ElseIf Cells(2, 1)  / Cells(2, 2)<0.05 and (Cells(2, 1) / Cells(2, 4)>1 Then 
    MsgBox "waarde na laagste waarde is gestegen tot boven de 1%" & vbCr & vbCr & Format((Cells(2, 1) / Cells(2, 4)) , "0.00%"), , "Actie 1"
  End If
End If 
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan