
Tengo una hoja en Excel con una lista de números. A veces quiero mover X unidades de una celda a otra.
Digamos que tengo un salón de clases con niños, cada uno tiene una cierta cantidad de canicas. Hay 2 columnas en la hoja, la primera columna son los nombres y la segunda columna son las canicas. John le da 375 canicas a Bill. Quiero actualizar la hoja.
Actualmente saco una calculadora, hago restas y sumas y actualizo las celdas manualmente.
Esto es engorroso y propenso a errores. ¿Existe una mejor manera?
(Sé que puedo escribir "=8300+375" en la celda, pero eventualmente cada celda tendrá una fórmula estúpidamente larga...)
Respuesta1
Respuesta2
Máté JuhászLa publicación me inspiró a sugerirle VBA Macro, ya que es más rápido y también ahorra tiempo. Y creo que Tú puedes manejarlo.
Cómo funciona:
- Supongo que tienes datos en Range
A2:B4
. Coloque los valores que desea restar
C2:C4
.DePestaña Desarrollador, haga clicModo de diseño
entoncesInsertar& DeControles ActiveX
hacer clicIcono del botón de comandoy dibujarlo en
la Hoja.Haga clic en elBotón de comando, accede al editor VB de Windows.
Copiar pegareste código entre
Subcomando privadoButton1_Click()
Subtítulo final.
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
Desde el editor VB de Windows, haga clicMenú Archivoluego golpeaCerrar y regresar a Microsoft Excel.
Finalmente haga clic enBotón de comando.
Encontrará nuevos valores en Column B
(consulte la captura de pantalla).
NÓTESE BIEN
Si desea restar el valor anterior del valor nuevo solo en una celda, puede 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
PrensaALT+F11para abrir el editor VB yCopiar pegarel código mostrado arriba comoMódulo estándar.
Tan pronto como sobrescriba el valor
B1
, el código
lo restará del valor anterior y lo reescribiráB1
con el nuevo valor.
Ajuste el rango de datos según sus necesidades.