我们都在头脑中添加了信息,然后将结果写下来,例如,一个简单的计数,昨天我卖出了10个苹果,前天我卖出了5个,总共15个,今天我卖出了5个,总共20个,一个简单的方程式,我们每天都在头脑中做这个简单的方程式,甚至想都没有想过,我相信这个公式基本上是这样写的: A+B=Bnew
其中A是每日销售量。B是总销售额,Bnew是新的总销售额。
我如何在excel中做到这一点,而不需要运行总行数的页面,或者花哨的visual basic脚本。
我想使用至多3个单元格的Cell-1 =改变变量,(日销售量) Cell-2 =要添加A1的所有销售额的运行合计。如果需要,Cell-3用来保存Cell-2的内容,就像我们的内存一样,当我们更新总数时,Cell-3也会保存内容。
这是一道非常简单的数学题,但却让我抓狂,试图让excel来做这道题,我找了又找,但我甚至不知道该问什么问题。
谢谢你的帮助
发布于 2019-01-06 04:15:45
考虑到这些限制:
我认为剩下的选择是迭代计算?我不知道,也许其他人能想出更好的解决方案。但是关于迭代计算,下面是我如何设置我的工作表的:

它使用两个单元格(忽略第1行中的标签):
在单元格A2中,我有公式
A2(准备输入一些数字)然后我转到File > Options > Formulas > Enable iterative calculation > Change "Maximum Iterations" to 1 > OK
关于循环引用的任何通知现在应该消失了,如果我在单元格B2中放入一个数字,单元格A2将按照您在帖子中描述的方式进行更新。希望你也能在你的机器上复制它。
需要注意的是,您要更改的迭代计算设置是应用程序范围的,因此我相信它会影响所有其他工作簿。一些需要牢记的事情。
发布于 2019-01-06 06:13:28
如果您的设置在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中的值相加。

发布于 2019-01-06 06:19:48
假设您可以使用少量的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不会更新(与迭代计算方法不同)。如果A2或B2包含非数值型数据,我们使用Application.Sum而不是+运算符来避免Type Mismatch错误。
试试,看看它能不能达到你想要的效果。
编辑:
如果您有多行,您可以尝试如下所示。
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 Subhttps://stackoverflow.com/questions/54054949
复制相似问题