2017-05-23 1 views
0

donc je travaille actuellement sur une feuille Excel où je dois calculer les intervalles de confiance. Longue histoire courte, je pense que la seule façon que je peux le faire automatiquement, est d'écrire le code vba. La première étape serait de calculer la moyenne des cellules dans une colonne pour plusieurs colonnes dans la feuille. Ce que je l'ai fait:Excel sommation sur les lignes avec pour boucle - erreur de type incompatibilité

Dim temp As Double 
temp = 0 

Dim it_row As Long 
for it_row = 1 to 100 
    if IsBlank(Sheet.Cells(it_row,it_col)) then 
      temp = temp + 0 
    else 
      temp = temp + Sheet.Cells(it_row,it_col).Value 
    end if 
next it_row 

Dim Average As Double 
Average = temp/100 
'writing average in another cell 

Ce code ne fonctionne pas, comme le compilateur renvoie type missmatch, le code d'erreur 13 dans la ligne

temp = temp + Sheet.Cells(it_row,it_col).Value

J'ai essayé de faire un CDouble(Sheet.Cells(it_row,it_col).Value) mais cela n'a pas travail.

Toute aide est appréciée, car je suis assez désespérée parce que googling ne m'a pas vraiment aidé.

Je devrais mentionner que je dois utiliser vba et ce code parce que cela fait partie d'un plus grand processus automatisé et mon superviseur a dit que je dois utiliser vba pour l'automatisation à l'étape suivante.

+0

alors 'Sheet.Cells (it_row, it_col) .Value' a du texte ou une erreur en elle. Vous devrez tester si la cellule est un nombre avant d'essayer de l'ajouter à 'temp' –

+0

Aussi je ne vois pas où vous déclarez et assigner une valeur à' it_col' –

+0

si vos cellules ont des formules qui renvoient '" "', alors 'ISBLANK' retournera false. Peut-être essayer 'Sheet.Cells (it_row, it_col) =" "' à la place. –

Répondre

-2

Vérifier

Sheet.Cells(it_row,it_col).Value 

... avec

if isnumeric(Sheet.Cells(it_row,it_col).Value) 

... avant de l'ajouter à une valeur de type double. Si cette vérification échoue, vous pouvez choisir de l'ignorer ou de la traiter comme sth. autre. J'aurais ajouté ceci comme commentaire, mais je n'ai pas assez de rep. ajouter des commentaires

+1

Ce commentaire a déjà été fait. s'il vous plaît ne pas utiliser l'espace de réponse pour les commentaires, c'est un bon moyen de perdre le rep que vous avez déjà. –

0

Les Average et Somme des fonctions Excel ne tiennent pas compte du texte, booléen, et les valeurs vides:

Average = Application.Average(Sheet.Cells(1, it_col).Resize(100))