Besoin d'aide , création de fonction excel (sur un vecteur)

Emile

XLDnaute Nouveau
Bonjour
Je fais une étude sur dix actions du NASDAQ en se basant sur une approche historique .J'ai réussi a télécharger les data concernant ces actions durant les quatre dernières années sous format xls . Je dois calculer les retours et déterminer les covariances ,mais je suis bloqué , je trouve pas comment manipuler Excel .
(j'ai juste besoin d'une fonction qui prend en argument un vecteur de dimension n [S(i)] et retourne un vecteur [R(i)] , R(i)=(S(i)-S(i-1))/S(i)
Merci
 

job75

XLDnaute Barbatruc
Re : Besoin d'aide , création de fonction excel (sur un vecteur)

Bonjour Emile, bienvenue sur XLD,

Voyez le fichier joint et la fonction R dans Module1 (Alt+F11) :

Code:
Option Base 1

Function R(S As Variant) As Variant
Dim i&, t#()
S = Application.Transpose(S)
On Error Resume Next
i = UBound(S, 2)
On Error GoTo 0
If i Then S = Application.Transpose(S)
i = UBound(S)
ReDim t(i - 1)
For i = 2 To i
  t(i - 1) = (S(i) - S(i - 1)) / S(i)
Next
R = t
End Function
Cette fonction est utilisée dans la feuille de calcul avec les 2 types de "vecteurs".

Edit : salut STephane

A+
 

Pièces jointes

  • Vecteurs(1).xls
    36.5 KB · Affichages: 43
Dernière édition:

job75

XLDnaute Barbatruc
Re : Besoin d'aide , création de fonction excel (sur un vecteur)

Re,

Ceci est peut-être préférable quand le calcul crée une erreur (valeur zéro, texte...) :

Code:
Option Base 1

Function R(S As Variant) As Variant
Dim i&, t() As Variant
S = Application.Transpose(S)
On Error Resume Next
i = UBound(S, 2)
If i Then S = Application.Transpose(S)
i = UBound(S)
ReDim t(i - 1)
For i = 2 To i
  On Error Resume Next
  t(i - 1) = (S(i) - S(i - 1)) / S(i)
  If Err Then t(i - 1) = "n/a"
Next
R = t
End Function
Fichier (2).

A+
 

Pièces jointes

  • Vecteurs(2).xls
    36.5 KB · Affichages: 40

job75

XLDnaute Barbatruc
Re : Besoin d'aide , création de fonction excel (sur un vecteur)

Re,

On peut aussi utiliser cette fonction RS qui renvoie un scalaire et non plus un vecteur :

Code:
Option Base 1

Function RS(S As Variant, ordre&) As Variant
'renvoie un scalaire
S = Application.Transpose(S)
On Error Resume Next
RS = UBound(S, 2)
If RS Then S = Application.Transpose(S)
On Error Resume Next
RS = (S(ordre + 1) - S(ordre)) / S(ordre + 1)
If Err Then RS = "n/a"
End Function
Dans le fichier (3) joint le calcul est bien plus rapide car il n'y a plus de boucle...

A+
 

Pièces jointes

  • Vecteurs(3).xls
    38 KB · Affichages: 49

Statistiques des forums

Discussions
312 498
Messages
2 088 996
Membres
104 001
dernier inscrit
dessinbecm