Fonction de somme VBA (plages, colonnes, etc.)

Ce tutoriel va vous montrer comment utiliser la fonction Excel Sum en VBA

La fonction somme est l'une des fonctions Excel les plus largement utilisées, et probablement la première que les utilisateurs d'Excel apprennent à utiliser. VBA n'a pas réellement d'équivalent - un utilisateur doit utiliser la fonction Excel intégrée dans VBA en utilisant le Fonction Feuille de Travail objet.

Sum WorksheetFunction

L'objet WorksheetFunction peut être utilisé pour appeler la plupart des fonctions Excel disponibles dans la boîte de dialogue Insérer une fonction dans Excel. La fonction SOMME en fait partie.

123 Fonction de sous-testRange("D33") = Application.WorksheetFunction.Sum("D1:D32")Fin du sous-marin

Vous pouvez avoir jusqu'à 30 arguments dans la fonction SOMME. Chacun des arguments peut également faire référence à une plage de cellules.

Cet exemple ci-dessous ajoutera les cellules D1 à D9

123 Sous-TestSum()Plage("D10") = Application.WorksheetFunction.SUM("D1:D9")Fin du sous-marin

L'exemple ci-dessous additionnera une plage dans la colonne D et une plage dans la colonne F. Si vous ne saisissez pas l'objet Application, il sera supposé.

123 Sous-TestSum()Plage("D25") = WorksheetFunction.SUM (Plage("D1:D24"), Plage("F1:F24"))Fin du sous-marin

Remarquez que pour une seule plage de cellules, vous n'avez pas besoin de spécifier le mot "Plage" dans la formule devant les cellules, il est supposé par le code. Cependant, si vous utilisez plusieurs arguments, vous devez le faire.

Affectation d'un résultat de somme à une variable

Vous souhaiterez peut-être utiliser le résultat de votre formule ailleurs dans le code plutôt que de l'écrire directement dans la plage Excel. Si tel est le cas, vous pouvez affecter le résultat à une variable à utiliser plus tard dans votre code.

1234567 Sub AssignSumVariable()Dim résultat comme Double'Attribuer la variablerésultat = WorksheetFunction.SUM(Range("G2:G7"), Range("H2:H7"))'Afficher le résultatMsgBox "Le total des plages est " & résultatFin du sous-marin

Somme d'un objet de plage

Vous pouvez affecter un groupe de cellules à l'objet Range, puis utiliser cet objet Range avec le Feuille de travailFonction objet.

123456789 Sous TestSumRange()Dim rng As Range'attribuer la plage de cellulesDéfinir rng = Range("D2:E10")'utiliser la plage dans la formuleRange ("E11") = WorksheetFunction.SUM(rng)'libérer l'objet rangeDéfinir rng = RienFin du sous-marin

Somme plusieurs objets de plage

De même, vous pouvez additionner plusieurs objets de plage.

123456789101112 Sub TestSumMultipleRanges()Dim rngA comme plageDim rngB comme plage'attribuer la plage de cellulesDéfinir rngA = Plage("D2:D10")Définir rngB = Range("E2:E10")'utiliser la plage dans la formuleRange ("E11") = WorksheetFunction.SUM(rngA, rngB)'libérer l'objet rangeDéfinir rngA = RienDéfinir rngB = RienFin du sous-marin

Somme une colonne ou une ligne entière

Vous pouvez également utiliser la fonction Somme pour additionner une colonne entière ou une ligne entière

Cette procédure ci-dessous additionnera toutes les cellules numériques de la colonne D.

123 Sous-TestSum()Range("F1") = WorksheetFunction.SUM(Range("D:D")Fin du sous-marin

Alors que cette procédure ci-dessous ajoutera toutes les cellules numériques de la ligne 9.

123 Sous-TestSum()Range("F2") = WorksheetFunction.SUM(Range("9:9")Fin du sous-marin

Somme un tableau

Vous pouvez également utiliser WorksheetFunction.Sum pour additionner des valeurs dans un tableau.

123456789101112 Sous TableauTest()Dim intA (1 à 5) en tant qu'entierDim SumArray en tant qu'entier'remplir le tableauintA(1) = 15intA(2) = 20intA(3) = 25intA(4) = 30intA(5) = 40'additionne le tableau et montre le résultatMsgBox WorksheetFunction.SUM(intA)Fin du sous-marin

Utilisation de la fonction SumIf

Une autre fonction de feuille de calcul qui peut être utilisée est la fonction SUMIF.

123 Sous-TestSumIf()Range("D11") = WorksheetFunction.SUMIF(Range("C2:C10"), 150, Range("D2:D10"))Fin du sous-marin

La procédure ci-dessus n'ajoutera les cellules de la plage (D2:D10) que si la cellule correspondante de la colonne C = 150.

Formule Somme

Lorsque vous utilisez le WorksheetFunction.SUM pour ajouter une somme à une plage dans votre feuille de calcul, une somme statique est renvoyée, pas une formule flexible. Cela signifie que lorsque vos chiffres dans Excel changent, la valeur renvoyée par le Feuille de travailFonction ne changera pas.

Dans l'exemple ci-dessus, la procédure TestSum a additionné Range(D2:D10) et le résultat a été placé dans D11. Comme vous pouvez le voir dans la barre de formule, ce résultat est un chiffre et non une formule.

Si l'une des valeurs change donc dans la plage (D2:D10), le résultat dans D11 sera NE PAS monnaie.

Au lieu d'utiliser le WorksheetFunction.SUM, vous pouvez utiliser VBA pour appliquer une fonction Sum à une cellule en utilisant le Formule ou FormuleR1C1 méthodes.

Méthode de formule

La méthode de formule vous permet de pointer spécifiquement vers une plage de cellules, par exemple : D2:D10 comme indiqué ci-dessous.

123 Sous TestSumFormulePlage("D11").Formule = "=SOMME(D2:D10)"Fin du sous-marin

Méthode FormulaR1C1

La méthode FromulaR1C1 est plus flexible dans la mesure où elle ne vous limite pas à une plage définie de cellules. L'exemple ci-dessous nous donnera la même réponse que celui ci-dessus.

123 Sous TestSumFormule()Plage("D11").FormuleR1C1 = "=SUM(R[-9]C:R[-1]C)"Fin du sous-marin

Cependant, pour rendre la formule plus flexible, nous pourrions modifier le code pour qu'il ressemble à ceci :

123 Sous TestSumFormule()ActiveCell.FormuleR1C1 = "=SUM(R[-9]C:R[-1]C)"Fin du sous-marin

Où que vous soyez dans votre feuille de calcul, la formule additionnera ensuite les 8 cellules directement au-dessus et placera la réponse dans votre ActiveCell. La plage à l'intérieur de la fonction SUM doit être référencée à l'aide de la syntaxe de ligne (R) et de colonne (C).

Ces deux méthodes vous permettent d'utiliser des formules Excel dynamiques dans VBA.

Il y aura désormais une formule dans D11 au lieu d'une valeur.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave