2010-11-17 28 views
5

Je le code suivantune plage nommée Excel VBA ligne somme

For i = 1 To DepRng.Rows.Count 
    For j = 1 To DepRng.Columns.Count 
     DepRng.Cells(i, j) = Application.Sum(KidsRng.Row(i)) //Does not work 
    Next j 
Next i 

Bien que je sais est faux, je ne sais pas comment l'obtenir à stocker dans DepRng.Cells(i, j) la somme totale de l'ensemble KidsRng.Row[i] Toute aide?

+0

Pouvez-vous ajouter dans une définition de KidsRng? –

+0

désolé je ne suis pas, que voulez-vous dire en ajoutant une définition? – Panicos

+0

Semble que DepRng.Columns.Count doit être 1 ... sinon vous répétez la même valeur –

Répondre

2

Classées, merci à tous pour l'aide ur

DepRng.Cells(i, j) = Application.Sum(KidsRng.Rows(i)) //just needed to add the "s" in rows 
+0

Bien! ... mais je ne comprends toujours pas ce que votre index j ... –

+0

c'est pour une autre ligne je l'avais juste là pour l'instant, mais j sera rempli avec d'autres plages de lignes. Désolé pour la confusion cependant, et merci pour l'aide – Panicos

1

Il y a peut-être un meilleur moyen que cela, mais c'est ma solution qui dépend du moteur interne de formule Excel, elle pourrait suffire pour ce que vous faites ... Elle détermine l'adresse complète de KidsRng. Row (i) et l'envoie dans une chaîne de formule = SUM() et évaluée par Application.Evaluate.

For i = 1 To DepRng.Rows.Count 
    For j = 1 To DepRng.Columns.Count 

     DepRng.Cells(i, j).Value = Application.Evaluate("=SUM(" & KidsRng.Row(i).Address(True, True, xlA1, True) & ")") 

    Next j 
Next i 

mis à jour pour fonctionner si kidsrng existait dans une autre feuille/livre mis à jour pour utiliser Application.Evaluate

3

Le code suivant fonctionne bien.

Peut-être que vous devriez le comparer avec le vôtre:

Sub a() 

Dim DepRng As Range 
Dim kidsrng As Range 
Set DepRng = Range("B1:B2") 
Set kidsrng = Range("C1:F2") 

For i = 1 To DepRng.Rows.Count 
     DepRng.Cells(i, 1) = Application.Sum(kidsrng.Rows(i)) 
Next i 

End Sub 

Il suffit de remplir la gamme C1: F2 avec les chiffres et les totaux par ligne apparaît dans B1: B2 lors de l'exécution de la macro.