
Tenho uma planilha no Excel com uma lista de números. Às vezes quero mover X unidades de uma célula para outra.
Digamos que eu tenha uma sala de aula com crianças, cada uma com um certo número de bolinhas de gude. Existem 2 colunas na planilha, a primeira coluna contém nomes e a segunda coluna contém bolinhas de gude. John dá 375 bolinhas de gude para Bill. Quero atualizar a planilha.
Atualmente pego uma calculadora, faço subtração e adição e atualizo as células manualmente.
Isso é complicado e sujeito a erros. Existe uma maneira melhor?
(Eu sei que posso escrever "=8300+375" na célula, mas eventualmente cada célula terá uma fórmula estupidamente longa.)
Responder1
Responder2
Máté Juhászpost me inspirou a sugerir macro VBA, já que é mais rápido e economiza tempo também. E eu acredito que você pode lidar com isso.
Como funciona:
- Presumo que você tenha dados em Range
A2:B4
. Coloque os valores que deseja subtrair
C2:C4
.DeGuia do desenvolvedor, cliqueModo de projeto
entãoInserir& DeControles ActiveX
cliqueÍcone do botão de comandoe desenhe na
planilha.Clique noBotão de comando, você acessa o editor VB do Windows.
Copiar colareste código entre
Sub CommandButton1_Click() privado
Finalizar sub.
Range("C2:C4").Select Selection.Copy Range("B2").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlSubtract, SkipBlanks:= _ False, Transpose:=False Range("C2:C4").Select Selection.ClearContents Application.CutCopyMode = False
No editor VB do Windows, cliqueMenu de arquivoentão bataFechar e retornar ao Microsoft Excel.
Por fim clique emBotão de comando.
Você encontra novos valores em Column B
(verifique a captura de tela).
Observação
Se você deseja subtrair o valor antigo do novo valor apenas em uma célula, você pode usar este código VBA.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 2 And Target.Row = 1 Then
NewVal = Range("B1").Value
Application.EnableEvents = False
Application.Undo
OldVal = Range("B1").Value
Range("B1").Value = NewVal
Range("B1").Value = NewVal - OldVal
Application.EnableEvents = True
End If
End Sub
ImprensaALT+F11para abrir o editor VB eCopiar colaro código mostrado acima comoMódulo Padrão.
Assim que você substituir o valor em
B1
, o código irá
subtraí-lo do valor antigo e reescrevê-loB1
com o novo valor.
Ajuste o intervalo de dados conforme sua necessidade.