/ / VBA Excel findet den Datumszeitraum im Bereich und führt Berechnungen innerhalb von - excel, vba durch

VBA Excel sucht Datumszeitraum im Bereich und führt Berechnungen innerhalb von - Excel, vba aus

Ich führe eine VB-Funktion aus, um den kumulierten Betrag innerhalb eines bestimmten Zeitraums mit verschiedenen Kategorien zu sortieren. Das Ziel sind die Ausgaben für das Personalkonto.

Zum Beispiel habe ich in einem Blatt "tmp" in Spalte A einige Daten, in Spalte B eine Kategorie (z. B. Gehalt, Transport ...) und in Spalte C die Werte.

Ich möchte eine Funktion definieren und habe versucht, Folgendes festzulegen:

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

Aber ich weiß nicht wirklich, wie ich die Werte von einem anderen Blatt abrufen und die Schleife im Bereich ausführen soll, um diese Summe festzulegen. Kann mir jemand dabei helfen?

Antworten:

0 für die Antwort № 1
  1. Die Zuordnung zu Operationen muss eine Objektzuweisung sein, dh: Verwenden Sie Set (nicht Let / default).

    Set Operations = ThisWorkbook.Sheets ("tmp"). Range ("A1: C3)

  2. Sie können die Werte wie folgt aus dem anderen Blatt abrufen (vorausgesetzt, Sie meinen "tmp")

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

Ich denke, es wäre besser, wenn die Funktion einen zusätzlichen Bereichsparameter verwendet und Sheet1! A als Argument angibt. Auf diese Weise weiß Excel, wann eine Neuberechnung erforderlich ist.

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

Und rufen Sie Cumulatif mit einer solchen Formel auf:

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