向多个现有总数添加不同的新值

向多个现有总数添加不同的新值

以下是对上一个问题的回答。

您可以使用 VBA 编程实现您想要做的事情。在您的工作表中,默认名称为 say,Sheet1您有一个 say 单元格A1,该单元格应每月被覆盖,并且B1您希望在该单元格中看到累计总数。

右键单击Sheet1并单击查看代码。或者,按住ALT + F11并双击 VBA 项目下左侧窗格中的 Sheet1。

将打开一个空白的 VBA 代码窗口。在其中输入以下代码。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

Set KeyCells = Range("A1")

If Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then

Else
   If IsNumeric(Range("A1").Value) Then
        Range("B1").Value = Range("B1").Value + Range("A1").Value
   Else

   End If
End If
End Sub

保存并退出。

将工作簿保存为 filename.xlsm。即启用宏的工作簿。

现在,当您覆盖单元格中的值时,A1它将被添加到B1。确保您A1只在需要时更新,否则它将继续将其添加到B1

此代码中没有实施这样的验证,因此A1每月只能更新一次!只是进行基本检查,该检查A1应为数字,以防止运行时错误。

我发现这对我的一个项目非常有用。

问题是,我该如何改变这种情况,使之能够处理多个独立的项目。

答案1

根据您具体需要几个项目,可以用不同的方式完成。如果您只想向下扩展功能,则只需在代码中引入一点灵活性,如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

Set KeyCells = Range("A1:A10")

If Not Application.Intersect(KeyCells, Target) Is Nothing And IsNumeric(Target.Value) Then
    Target.Offset(0, 1).Value = Target.Offset(0, 1).Value + Target.Value
End If
End Sub

其中,KeyCells将控制列表的长度,并且1代表Target.Offset(0, 1)输出 – 在本例中为“B”列。

相关内容