Como obtenho o Excel para extrair dados de várias pastas de trabalho de datas exatas com base em uma data inserida

0

Estou executando o windows-7 e usando o Excel 2007 Enterprise.

Eu sou um motorista de caminhão e preciso catalogar meu pagamento com base em um sistema dia-a-dia em constante mudança. Eu sou pago por milha, por parada, por hora ou por taxa fixa, dependendo do tipo de rota.

Eu fiz uma pasta de trabalho que usa =IF() fórmulas para determinar qual escala de pagamento usar e calcula quanto eu devo pagar automaticamente. Como resultado, cada pasta de trabalho tem 4 folhas, 1 folha por viagem, pois mais de 4 é tão raro que só pode acontecer uma vez por ano.

A folha 1 puxa os dados das planilhas 2, 3 e 4 automaticamente e preenche as células corretas e, em seguida, recalcula meu pagamento, dependendo de quais dados são inseridos.

Agora que tenho uma pasta de trabalho para cada dia, como não posso combinar dias por várias razões que não valem a pena explicar aqui, preciso ter um total para cada semana para comparar meus ganhos brutos. Eu tenho outra pasta de trabalho apenas por esse motivo, no entanto, não consigo obter meu pagamento semanal para extrair dados de minhas folhas de pagamento diárias, pois são pastas de trabalho separadas. Eu preciso do meu pagamento semanal para puxar todas as células de pagamento e totalizá-las em uma única folha.

A célula no pagamento diário é "B23 na planilha 1", esse é o local em todas as pastas de trabalho. Eu sei que isso é muita informação, espero que ajude você a entender o que eu preciso. Então, para o que eu preciso: eu quero inserir a data em que devo ser pago e fazer com que a pasta de trabalho encontre os dias necessários para fazer referência com base nessa data, ou seja: 11/15/13 é pago por datas 11/03/13 - 11 / 08/13 ". Agora que tem as datas, encontre o valor na célula B23 na folha 1 de todas as 7 datas e mostre-a neste livro. Eu posso então tê-lo comparar o meu salário bruto ao que eu deveria ser pago se é diferente, essa parte eu já sei fazer e já configuro, agradeço antecipadamente por sua ajuda.

Kane
fonte
Provavelmente você precisará de VBA, portanto, para ajudá-lo, precisaremos de sua convenção de nomenclatura para cada pasta de trabalho (dia). Isso ocorre porque o Excel não pode referenciar pastas de trabalho fechadas por meio da função e precisará abrir os livros e extrair os dados (codificados) em vez de referenciá-los. Um bom começo seria Aqui
Raystafarian
Cada dia é salvo como a data, ou seja: m-dd-yy. Cada folha é denominada Trip-1, Trip-2, ect. Também deve ser notado que eu sou um motorista de caminhão e não um programador de código, algum código pode ter que ser estúpido para mim, eu tenho uma pequena compreensão do código, mas não perto do nível do Excel. Obrigado pela ajuda.
Kane
Então, para o seu exemplo, você precisa [11-03-13.xls]Trip-1!B23 através [11-08-13.xls]Trip-1!B23 certo? Ou é como um resumo! B23 ao invés de uma viagem?
Raystafarian
Na viagem 1, a viagem paga das outras 3 viagens é mostrada à direita e adicionada ao total em outra célula. Então eu não acredito que seja um verão. Eu acabei de perceber que cometi um erro ao identificar a célula de totais, B23 é o total de cada folha em sua folha, no Trip-1, todas as Trips são somadas na célula O6. Então, sim, eu precisaria abrir as datas que correspondem à data que seria inserida. Eu gostaria de poder mostrar meu caderno de trabalho para melhor compreensão.
Kane
Totalizado em O6? Em qual folha, para o dia todo?
Raystafarian

Respostas:

1

Dê uma olhada nisso e certifique-se de substituir o path com o caminho no seu computador onde você guarda seus arquivos.

Como funciona: Coloque isso em um módulo em uma nova pasta de trabalho, coloque o pagamento no celular A1 e execute a macro chamada Total. As datas e valores de pagamento aparecerão nas colunas B e C com a soma em C7.

Option Explicit
Sub Total()
Application.ScreenUpdating = False
Call getdates
Call openWBgetData
Range("c7") = [sum(C1:C6)]
Application.ScreenUpdating = True
End Sub

Private Sub getdates()
Dim i As Integer, j As Integer
j = 7

For i = 1 To 6
    Cells(i, 2) = Cells(1, 1).Value - j
    j = j + 1
Next

End Sub

Private Sub openWBgetData()
Dim k As Integer
Dim lng As Long
Dim path As Long
Dim wbname As String
path = "C:\path\to\"

For k = 1 To 6
    wbname = Cells(k, 2).Value
    Application.Workbooks.Open (path & wbname & ".xlsx")
    lng = Workbooks(wbname).Sheets("Trip-1").Range("O6").Value
    Workbooks(wbname).Close
    Cells(k, 3) = lng
Next


End Sub
Raystafarian
fonte
Não sei o que ou onde colocar isso, não sou tão avançado em codificação. Para usar algo assim, eu precisaria de uma abordagem passo a passo.
Kane
Eu adicionei minha outra pasta de trabalho via captura de tela Aqui As datas na coluna "I" são calculadas com base na data colocada em "B3". Eu preciso de celular "B7" para exibir o pagamento total em "Trip-1" celular "O6" da pasta de trabalho "11-03-13" e a célula "B8" para exibir o pagamento total na célula "Trip-1" "O6 "of Workbook" 11-04-13 ", e assim por diante. Cada mês está em sua própria pasta mantida em cada pasta ano dentro da minha pasta de trabalho ou seja: E: -Work-2013-Nov-11-03-13. Obrigado pela sua paciência e ajuda com isso, eu sei que sou um novato.
Kane
habilite a guia do desenvolvedor, entre nela e insira um novo módulo
Raystafarian
Eu não consigo fazer esse código funcionar, pode ser culpa minha, já que eu disse que não sou uma pessoa de código. talvez eu possa ser mais específico. na pasta de trabalho "Weekly Pay" eu tenho célula B3 em branco, quando eu colocar uma data (11-15-13) em células "B3" "I4-I10" subtrair 6 a 12 dias (11/03/13 - 11/09 / 13) e mostra as datas nas células "I4-I10" da semana anterior em que fui pago na célula "B3". eu preciso uma célula para ver "I4" tem uma data (11/03/13), puxe a pasta de trabalho "Daily Pay" salva como "11-03-13" e exiba o "Total Pay" encontrado na célula-O6 da pasta de trabalho "11 -03-13 ". Uma vez que eu tenho uma célula que exibe informações da célula eu preciso
Kane
pode fazer funcionar. Obrigado novamente por sua ajuda.
Kane