我在 Excel 中有一张包含数字列表的工作表。有时我想将 X 个单位从一个单元格移动到另一个单元格。
假设我有一个教室,每个孩子都有一定数量的弹珠。工作表中有 2 列,第一列是姓名,第二列是弹珠。约翰给了比尔 375 颗弹珠。我想更新工作表。
目前,我拿出一个计算器,进行减法和加法,然后手动更新单元格。
这很麻烦,而且容易出错。有没有更好的方法?
(我知道我可以在单元格中写入“=8300+375”,但最终每个单元格都会有一个很长的公式。)
答案1
答案2
马特·尤哈斯这篇文章启发我向您推荐 VBA 宏,因为它更快,也更省时。而且我相信您可以处理它。
怎么运行的:
- 我假设您有 Range 中的数据
A2:B4
。 将您想要减去的值放入其中
C2:C4
。从开发者标签, 点击设计模式
然后插入& 从ActiveX 控件
点击命令按钮图标并将其绘制到
Sheet 上。点击命令按钮,您就进入了 VB 编辑器 Windows。
复制粘贴此代码介于
私有子命令按钮1_Click()
子目录结束。
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
在 VB 编辑器 Windows 中单击文件菜单然后打关闭并返回 Microsoft Excel。
最后点击命令按钮。
您会在中找到新值Column B
(查看屏幕截图)。
注意:
如果您只想从单元格中的新值中减去旧值,那么您可以使用此 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
按ALT+F11打开 VB 编辑器并复制粘贴上面显示的代码为标准模块。
一旦您覆盖中的值
B1
,代码就会从旧值中减去它并 用新值
重写。B1
根据需要调整数据范围。