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 № 1A 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)
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)