/ / VBA Excel znajduje okres w zakresie i wykonuje obliczenia w obrębie - excel, vba

VBA Excel znajduje okres w zakresie i wykonuje obliczenia w ramach - excel, vba

Wykonuję funkcję VB, aby uporządkować skumulowaną kwotę w określonym czasie z różnymi kategoriami. Celem jest wydatki na konto personelu.

Na przykład mam w arkuszu „tmp” w kolumnie A niektóre daty, w kolumnie B kategorię (np. Wynagrodzenie, Transport ...), aw kolumnie C wartości.

Chcę zdefiniować funkcję i próbowałem ustawić:

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

Ale tak naprawdę nie wiem, jak uzyskać wartości z innego arkusza i zrobić pętlę w zakresie, aby ustawić tę sumę. Czy ktoś może mi pomóc w tej sprawie?

Odpowiedzi:

0 dla odpowiedzi № 1
  1. Przypisanie do operacji musi być przypisaniem obiektu, co oznacza: użyj Set (nie Let / default).

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

  2. Możesz pobrać wartości z innego arkusza (zakładając, że masz na myśli „tmp”) w następujący sposób

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

Myślę, że lepiej by było, gdyby funkcja przyjmowała dodatkowy parametr zakresu i dostarczał Arkusz1!

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

I zadzwoń do Cumulatif używając takiej formuły:

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