/ / VBA Excel trouve la période dans la plage et fait des calculs dans - Excel, VBA

VBA Excel recherche une période de date dans la plage et effectue des calculs dans - excel, vba

J'exécute une fonction VB pour trier le montant cumulé dans une période spécifiée avec différentes catégories. L'objectif est pour les dépenses du compte du personnel.

Par exemple, j'ai dans une feuille "tmp" dans la colonne A quelques dates, dans la colonne B une catégorie (par exemple. Salaire, Transport ...) et dans la colonne C les valeurs.

Je veux définir une fonction et j'ai essayé de définir:

Function Cumulatif(Categorie As String, Debut As Date, Fin As Date) As Double
" Do the sum of a category between a starting and ending date specified
Dim Operations As Variant
Dim SpecificSum As Double
Dim i As Integer
Operations = ThisWorkbook.Sheets("tmp").Range("A1:C3")
For Each Row In Operations.Rows
SpecificSum = 0
Next
Cumulatif = SpecificSum
End Function

Mais je ne sais pas vraiment comment obtenir les valeurs d'une autre feuille et faire la boucle dans la plage pour définir cette somme. Quelqu'un peut-il m'aider à ce sujet?

Réponses:

0 pour la réponse № 1
  1. L'affectation aux opérations doit être une affectation d'objet, ce qui signifie: utilisez Set (pas Let / default).

    Définir les opérations = ThisWorkbook.Sheets ("tmp"). Range ("A1: C3)

  2. Vous pouvez obtenir les valeurs de l'autre feuille (en supposant que vous voulez dire "tmp") comme suit

    SpecificSum = SpecificSum + Row.Cells(1, 1)
    

Je pense que vous feriez mieux que la fonction prenne un paramètre de plage supplémentaire et fournisse Sheet1! A comme argument; de cette façon, Excel saura quand il doit recalculer.

Function Cumulatif(Categorie As String, Debut As Date, Fin As Date, Operations As Range) As Double
" Do the sum of a category between a starting and ending date specified
"Dim Operations As Variant
Dim SpecificSum As Double
Dim i As Integer
"Set Operations = ThisWorkbook.Sheets("Sheet1").Range("A2:C3")
For Each Row In Operations.Rows
SpecificSum = SpecificSum + Row.Cells(1, 1)
Next
Cumulatif = SpecificSum
End Function

Et appelez Cumulatif en utilisant une telle formule:

=Cumulatif("hello9","10/1/2010", "10/31/2010",Sheet1!A2:A3)