• 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.

Trendlijn reeks, automatisch naar 0 terug voorspellen

Status
Niet open voor verdere reacties.

mschrijver

Gebruiker
Lid geworden
1 apr 2011
Berichten
40
Goedemiddag,

Ik heb een Excelblad met daarop een grafiek wat bestaat uit 2 reeksen.

1. CBR waarde
2. Correctie

Zodra de gebruiker op een punt in de grafiek klikt, zal de correctie reeks bij het desbetreffende punt starten en selecteer vervolgens de volgende 20 punten als zijnde correctie.
Vervolgens wordt er aan de hand van die reeks een trendlijn getekend.

Nu heb je de mogelijkheid om in de eigenschappen van de trendlijn op te geven of hij voor of terug moet voorspellen.
Nu wil ik graag dat hij ten aller tijden terug naar 0 voorspelt, zodat de trendlijn de nieuwe 0-lijn wordt.

Handmatig kan ik dat natuurlijk makkelijk instellen. Mijn vraag is echter, is dit ook te automatiseren?
(VBA of wat dan ook?)

Voor het gemakt heb ik het Excelbestand toegevoegd als bijlage.

Alvast bedankt voor uw tijd en hulp.

Bekijk bijlage ChartEdit2.xlsm
 
ik weet niet precies waar je het wil gebruiken
Code:
Sub TrendlijnBepalen()
  With Sheets("blad1").ChartObjects("Grafiek 1").Chart.SeriesCollection(2).Trendlines(1)
    .Backward = 0
    .Forward = 1
  End With
End Sub
 
De functie die ik op dit moment gebruik om de reeks 'correctie' te bepalen is als volgt:

Code:
Private Sub mChart_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
    Debug.Print "CChartEvents.mChart_Select, ElementID="; ElementID; ", Arg1="; Arg1; ", Arg2="; Arg2
    With Blad1
        If ElementID = 3 And Arg1 = 1 And Arg2 > 0 Then
             Range(Cells(Arg2, 3), Cells(Arg2 + 20, 4)).Select
             Selection.Copy
             Range("J46").PasteSpecial Paste:=xlPasteValues
            Range("A4").Activate
       Else
            .Cells(3).Select
          
        End If
    End With
End Sub

Eigenlijk zou ik na het bepalen van de reeks ;

Code:
            Range("J46").PasteSpecial Paste:=xlPasteValues
            Range("A4").Activate

De trendlijn terug naar de 0 willen voorspellen.

Echter, als ik jouw code (bedankt daar voor) onder Range("A4").activate zet, en een punt uit de grafiek selecteer, doet hij niets anders dan dat hij gelijk al doet.

Enig idee hoe ik dit kan oplossen?

Alvast bedankt.
 
Laatst bewerkt:
op het ogenblik dat jij daar nieuwe gegevens zet, zal de trendlijn zich vanzelf aanpassen met de identieke instellingen die je voordien had, alleen met je nieuwe grafiekwaarden.
Dus begrijp ik niet dat je die backwards en forwards opnieuw zou moeten instellen.
Dus nadat jij een nieuw punt aangeklikt hebt, wat moet je dan precies overnieuw doen en wat waren de oude en de nieuwe waarden van die instellingen ?
 
Dat klopt. Echter, vroegen wij (ik en mijn collega) ons af of het mogelijk was om de regressielijn altijd vanaf 0 (of beter gezegd weer terug naar 0 gaat).
Het idee is :

Je importeert een dataset.
Grafiek wordt gegenereerd.
De gebruiker kijkt of de grafiek gecorrigeerd moet worden.
Ja? Selecteer de punt waarvoor de grafiek gecorrigeerd moet worden.
Trek een regressielijn.
Gebruik de regressielijn om de nieuwe 0-punt te bepalen (vandaar 'terug voorspellen' naar 0).
 
Laatst bewerkt door een moderator:
Code:
    With Blad1
        If ElementID = 3 And Arg1 = 1 And Arg2 > 0 Then
             .Range("J46").Resize(21, 2).Value = Range(Cells(Arg2, 3), Cells(Arg2 + 20, 4)).Value
             .ChartObjects("Grafiek 1").Chart.SeriesCollection(2).Trendlines(1).Backward = Cells(Arg2, 3).Value
             Range("A4").Activate
        Else
 
Code:
    With Blad1
        If ElementID = 3 And Arg1 = 1 And Arg2 > 0 Then
             .Range("J46").Resize(21, 2).Value = Range(Cells(Arg2, 3), Cells(Arg2 + 20, 4)).Value
             .ChartObjects("Grafiek 1").Chart.SeriesCollection(2).Trendlines(1).Backward = Cells(Arg2, 3).Value
             Range("A4").Activate
        Else

Geweldig! Dat is perfect.

Hartelijk dank voor uw hulp!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan