Como você está começando com uma solução de macro, suponho que você tenha conhecimento de programação suficiente para juntar o resultado final; então, dado que as peças principais que eu acho que você precisa são:
Primeiros passos
Certifique-se de que a faixa do desenvolvedor está sendo exibida e, em seguida, mude para o editor do VBA (Alt- F11).
Leia a esta página para obter uma apreciação do processo geral ; alguns dos exemplos podem estar muito próximos do que você deseja (por exemplo, "Criando automaticamente arquivos de pasta de trabalho a partir de dados da planilha").
Lendo uma célula
dim myVar1 as string
myVar1 = Sheets("Sheet1").Range("A1")
Isso permitirá a leitura de qualquer célula em particular em qualquer folha em particular.
Agregando valores de célula
Dim myvar2 As Integer
myvar2 = Application.WorksheetFunction.Sum(Sheets("Sheet1").Range("B4:B6"))
Isso permitirá que você use qualquer uma das funções padrão da planilha, em qualquer intervalo de células.
Escrevendo para uma célula
Sheets("Sheet2").Range("A1") = myVar1
(simplesmente o reverso da leitura)
Conectando a macro a um botão em uma folha
Depois de criar sua macro, adicione um botão à sua planilha mestre sempre que isso fizer mais sentido, seguindo este guia .
Boa sorte!
EDIT 1:
Escrevendo com base no deslocamento
Para gravar em uma célula específica com base em um deslocamento de data, você pode usar o DateDiff função para obter a distância para compensar, por exemplo:
Dim startDate As Date
Dim currDate as Date
Dim dateOffset As Integer
startDate = #10/21/2011#
currDate = Sheets("Summary Sheet").Range("F3")
dateOffset = DateDiff("d", startDate, currDate)
Então, você pode escrever para uma célula específica da mesma maneira que você já é:
ActiveSheet.Range("A1").Offset(0, dateOffset) = Total1
ActiveSheet.Range("A1").Offset(0, dateOffset+1) = Total2
etc
EDIT 2:
Encontrar uma data
Com base no seu comentário: você pode encontrar uma data em outra planilha da seguinte maneira:
Dim selectedDate As String
Dim rangeFound As Range
selectedDate = ActiveCell.Value
Set rangeFound = Sheet2.Cells.Find(CDate(selectedDate))
Obviamente, você alteraria Sheet2
para o que quisesse.
Isso lhe dará o endereço da célula que contém a data na folha de resumo. Se você usar rangeFound.Address
, receberá um valor semelhante a $D$9
. Se você usar rangeFound.Row
e rangeFound.Column
, obterá os números reais de linhas e colunas.
Observe que você também tem o endereço da célula ativa por meio do mesmo princípio (por exemplo, ActiveCell.Row
).
A partir daí, você pode copiar valores usando algo como
If Not (rangeFound Is Nothing) Then
ActiveCell.Offset(0, 1) = rangeFound.Offset(0, 1)
ActiveCell.Offset(0, 2) = rangeFound.Offset(0, 2)
End If