/ / VBA Excel encontra o período da data no intervalo e faz cálculos dentro - excel, vba

VBA Excel encontrar período de data no intervalo e fazer cálculos dentro de - excel, vba

Estou executando uma função VB para classificar o valor acumulado dentro de um período especificado com diferentes categorias. O objetivo é para despesas de conta pessoal.

Por exemplo, tenho em uma planilha "tmp" na coluna A algumas datas, na coluna B uma categoria (por exemplo, Salário, Transporte ...) e na coluna C os valores.

Quero definir uma função e tentei definir:

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

Mas eu realmente não sei como obter os valores de outra planilha e fazer o loop no intervalo para definir essa soma. Alguém pode me ajudar nisso?

Respostas:

0 para resposta № 1
  1. A atribuição às operações precisa ser uma atribuição de objeto, o que significa: use Set (não Let / default).

    Definir operações = ThisWorkbook.Sheets ("tmp"). Range ("A1: C3)

  2. Você pode obter os valores da outra planilha (assumindo que você quer dizer "tmp") da seguinte maneira

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

Eu acho que seria melhor ter a função usando um parâmetro de intervalo adicional e fornecendo Sheet1! A como argumento; dessa forma, o Excel saberá quando precisar recalcular.

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

E chame Cumulatif usando essa fórmula:

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