Excel - Enviar valor da célula para o destino
Questão
É possível enviar o valor de uma célula (copiar e colar especial) para outra célula em que o valor não seria perturbado quando o valor da fonte fosse alterado para '0'?
Minha planilha de resumo da calculadora da folha de pagamento obtém informações de outras planilhas a cada semana no arquivo do Excel e calcula a folha de pagamento da semana atual. A semana anterior teve valores, mas agora, durante a semana atual, as células da semana anterior são 0.
Meu objetivo é manter os valores da semana anterior em outra matriz de células, para que eu possa ter um total em execução para o mês.
Exemplo:
A3 tem a fórmula:
= SE (A3 = 'Calculadora de folha de pagamento'! M2, VLOOKUP (H1, 'Calculadora de folha de pagamento'! $ B $ 3: $ M $ 28, 8, FALSE), 0)
Esse valor precisa ser postado no K3, mas somente se for maior que '0'.
Se A3 retorna um valor de '0', qualquer valor maior que '0' que foi postado anteriormente no K3 seria deixado sozinho.
Eu tenho feito isso manualmente simplesmente copiando os valores que eu quero salvar, então usando o comando 'colar especial' e escolhendo 'valores', colados no alvo. O 'pular espaços em branco' não faz nada. A macro:
Sub Macro1 ()
'
Macro Macro1
'
'
Faixa ("C3"). Selecione
ActiveWindow.ScrollRow = 10
Intervalo ("C3: I52"). Selecione
Selection.Copy
Faixa ("K3"). Selecione
Selection.PasteSpecial Paste: = xlValues, operação: = xlNone, SkipBlanks: = _
Verdadeiro, transpor: = falso
Faixa ("K3"). Selecione
Application.CutCopyMode = False
End Sub
Sobrescreve os valores das semanas anteriores com zeros se eu escolher pular espaços em branco ou não (provavelmente porque as células são zeros, não em branco!)
Eu estou trabalhando com a matriz A3: I54 e desejo copiar e colar quaisquer valores maiores que '0' para K3: Q54 retendo quaisquer valores que foram postados anteriormente em K3: Q54 que sejam maiores que '0'.
Solução
Talvez isso possa levá-lo na direção certa se a minha interpretação estiver correta.
Isto irá comparar a coluna A com o que está atualmente na coluna K ........
A1 compara o valor em K1
A2 compara o valor em K2
etc ....
Se a coluna A for zero e a coluna K for maior que zero, mantenha o valor na coluna K. Caso contrário, copie o valor na coluna A para a coluna K.
Sub Macro1 () Dim jj = 3 Do Até Range ("A" & j) = "" Se Range ("A" & j) = 0 Então Range ("K" & j) = Range ("K" & j) Else Range ("K" & j) = Faixa ("A" & j) End Se j = j + 1 Loop End Sub
Para adicionar várias colunas, faça com que a macro pareça "C: K"
Sub Macro1 () Dim jj = 3 Do Até Range ("C" & j) = "" Se Range ("C" & j) = 0 Então Range ("K" & j) = Range ("K" & j) Else Range ("K" & j) = Faixa ("C" & j) End If Se Range ("D" & j) = 0 Então Range ("L" & j) = Faixa ("L" & j) Faixa ("L" & j) = Faixa ("D" & j) Fim Se Se Faixa ("E" & j) = 0 Então Faixa ("M" & j) = Faixa ("M" & j) Outros ("M" & j) = Faixa ("E" & j) Fim Se Se Range ("F" & j) = 0 Então Range ("N" & j) = Faixa ("N" & j) Else Range ( "N" & j) = Faixa ("F" & j) Fim Se Se Faixa ("G" & j) = 0 Então Faixa ("O" & j) = Faixa ("O" & j) Faixa Adicional (" O "& j) = Faixa (" G "& j) End If Se Range (" H "& j) = 0 Então Range (" P "& j) = Faixa (" P "& j) Else Range (" P "& j) = Faixa (" H "& j) Fim Se Se Faixa (" I "& j) = 0 Então Faixa (" Q "& j) = Faixa (" Q "& j) Faixa Adicional (" Q " & j) = Range ("I" & j) End Se j = j + 1 Loop End Sub
Observe que
Obrigado ao WutUp WutUp por esta dica no fórum.