我们脑子里都添加了信息,然后将结果写下来, 例如一个简单的理货,昨天我卖了10个苹果,前一天我卖了5个,总共15个,今天我卖了5个,总共20个,这是一个简单的方程式,我们每天都在脑海做着,甚至都没有考虑,我认为该公式基本上是:A + B = Bnew
其中A是每日销售额。 B将是总销售额 Bnew是新总数。
我如何在excel中做到这一点而又不占用运行总行数或花哨的视觉基本脚本的页面。
我最多要使用3个单元格 单元格1 =更改变量,(每日销售) 单元2 =将要添加A1的所有销售的运行总计。 并且如果需要,Cell-3可以像我们的内存一样保存Cell-2的内容,同时我们可以更新总数。
这是一个非常简单的数学问题,但是我一直在努力寻求卓越的表现,我进行了搜索和搜索,但我什至不知道要问的正确问题。
感谢您的帮助
答案 0 :(得分:1)
给出限制:
我认为剩余的选择是迭代计算?我不知道,也许其他人可以想到更好的解决方案。但是关于迭代计算,这是我设置工作表的方式:
这将使用两个单元格(忽略第1行中的标签):
select id, z from t where removed is null;
中,我有公式A2
=A2+B2
为空(准备输入一些数字)然后我去B2
关于循环引用的任何通知现在都应该消失,并且如果我在单元格File > Options > Formulas > Enable iterative calculation > Change "Maximum Iterations" to 1 > OK
中输入数字,则单元格B2
会按照您在帖子中所描述的方式进行更新。希望您也可以在计算机上复制它。
要注意的是您将在应用程序范围内更改迭代计算设置,因此我认为它会影响所有其他工作簿。注意事项。
答案 1 :(得分:0)
如果您的设置在Sheet1中如下所示:
然后,Sheet1的worksheetmodule中的一个小的vba宏应该可以解决问题:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
Range("B2").Value = Range("B2").Value + Range("A2").Value
End If
End Sub
此子例程将在每次工作表更改后运行。它将检查更改是否在单元格A2中。如果是这种情况,则将A2中的值添加到B2中的值。
答案 2 :(得分:0)
假设您可以接受少量的VBA代码,则可以尝试将下面的代码放入要在其中输入数据的工作表的工作表模块中:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
' Assumes "daily sales" are entered into cell B2 and that "running total" is in cell A2
If Not (Intersect(Target, Me.Range("B2")) Is Nothing) Then
Me.Range("A2").Value2 = Application.Sum(Me.Range("A2").Value2, Target.Value2)
End If
End Sub
(同时按下Alt + F11
会打开编辑器,然后您可以在左侧找到工作表模块)。
如果您随后在单元格B2
中输入数字,则单元格A2
应该以累积方式更新。如果您在B2
或A2
以外的单元格中输入数字,则应该发现单元格A2
不会更新(与迭代计算方法不同)。如果Application.Sum
或+
包含非数字数据,我们将使用Type Mismatch
而不是A2
运算符来避免B2
错误。
尝试一下,看看它是否能满足您的需求。
编辑:
如果您有多行,则可以尝试以下操作。
Private Sub Worksheet_Change(ByVal Target As Range)
' Assumes "daily sales" are entered into column B and that "running total" is in column A
If Target.Column = 2 Then
Me.Cells(Target.Row, "A").Value2 = Application.Sum(Me.Cells(Target.Row, "A"), Target)
End If
End Sub