Excel VBA : Calculer un écart-type en fonction d'une date
Résolu
falia
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aurais aimé calculer un écart-type des redements (plage returns) en fonction d'une date entre dateDeb et dateFin (d'une plage dates contenant toute les dates).
J'avais deux idées mais les deux me retournent #valeur. POurriez-vous m'aider svp? Je ne pense pas être loin de la solution...
------------------------------------------------------------------------------------------------
Merci
J'aurais aimé calculer un écart-type des redements (plage returns) en fonction d'une date entre dateDeb et dateFin (d'une plage dates contenant toute les dates).
J'avais deux idées mais les deux me retournent #valeur. POurriez-vous m'aider svp? Je ne pense pas être loin de la solution...
Function Ectype(returns as Range, dates as Range, dateDeb as Date, dateFin as Date) as Variant
Dim i,j,k,l,n,comp1,comp2 as Integer
n=dates.Columns.Count
comp1=0
comp2=0
For i=1 To n
comp1=comp1+1
If dates(i) = dateDeb Then
Deb=dates.Cells.Value(i) 'recup la place de la date debut
End If
For j=1 To n
comp2=comp2+1
If dates(i) = dateFin Then
Fin=dates.Cells.Value(j) 'recup la place de la datefin
End If
Dim res() as Range
ReDim res(n)
For k=comp1 To comp2
res(i)=returns(i)
Next k
Ectype=Application.WorksheetFunction.StDev(res)
End Function
------------------------------------------------------------------------------------------------
Function Ectype2(returns as Range, dates as Range, dateDeb as Date, dateFin as Date) as Variant
Dim i,comp,n as Integer
Dim res() as Range
comp=0
ReDim res(0)
Deb=dates.Find(dateDeb,dates) 'trouve l'indice de date debut
Fin=dates.Find(dateFin,dates) 'trouve l'indice de date fin
comp=Deb
n=Fin-Deb 'pour avoir le nb donnees sur la periode voulue
For i=1 To n
Do While comp <= dateDeb
res(i)=returns(comp)
comp=comp+1
Loop
Next i
Ectype2=Application.WorksheetFunction.StDev(res)
End Function
Merci
A voir également:
- Excel VBA : Calculer un écart-type en fonction d'une date
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
3 réponses
Essaies ceci (dates en colonnes triées ou non)
Cdlmnt
Public Function Ect(returns As Range, dates As Range, dateDeb As Date, dateFin As Date) As Single Dim k As Long, tv(), n As Long, nd As Long, dd As Date nd = dates.Columns.Count n = 0 For k = 1 To nd dd = dates.Cells(1, k).Value If dd >= dateDeb And dd <= dateFin Then n = n + 1 ReDim Preserve tv(n) tv(n) = returns.Cells(1, k).Value End If Next k Ect = Application.WorksheetFunction.StDev(tv) End Function
Cdlmnt
Juste, mes dates sont en colonnes (donc j'ai pris les lignes) j'ai donc juste changer cela:
Merci beaucoup pour ton aide !!!!!
Mais cela ne marche pas non plus...
J'ai aussi essayé avec index :
et cela ne marche pas non plus...
Merci
{=SOMME(SI(B:B>=A1;SI(B:B<=A2;C:C;0)))}
Merci