首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要带有temp变量的公式

需要带有temp变量的公式
EN

Stack Overflow用户
提问于 2019-01-06 02:24:51
回答 3查看 290关注 0票数 0

我们都在头脑中添加了信息,然后将结果写下来,例如,一个简单的计数,昨天我卖出了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来做这道题,我找了又找,但我甚至不知道该问什么问题。

谢谢你的帮助

EN

回答 3

Stack Overflow用户

发布于 2019-01-06 04:15:45

考虑到这些限制:

  • No helper列(“不占用总行数的页面”)
  • no VBA ("no lines basic script“)
  • ”我想使用至多3个单元格的“

我认为剩下的选择是迭代计算?我不知道,也许其他人能想出更好的解决方案。但是关于迭代计算,下面是我如何设置我的工作表的:

它使用两个单元格(忽略第1行中的标签):

在单元格A2中,我有公式

  • is A2(准备输入一些数字)

然后我转到File > Options > Formulas > Enable iterative calculation > Change "Maximum Iterations" to 1 > OK

关于循环引用的任何通知现在应该消失了,如果我在单元格B2中放入一个数字,单元格A2将按照您在帖子中描述的方式进行更新。希望你也能在你的机器上复制它。

需要注意的是,您要更改的迭代计算设置是应用程序范围的,因此我相信它会影响所有其他工作簿。一些需要牢记的事情。

票数 1
EN

Stack Overflow用户

发布于 2019-01-06 06:13:28

如果您的设置在Sheet1中如下所示:

然后,在Sheet1的worksheetmodule模块中使用一个小的VBA宏就可以了:

代码语言:javascript
复制
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中的值相加。

票数 0
EN

Stack Overflow用户

发布于 2019-01-06 06:19:48

假设您可以使用少量的VBA代码,您可以尝试将以下代码放入要输入数据的工作表的工作表模块中:

代码语言:javascript
复制
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应该以累积的方式更新。如果在B2A2以外的单元格中输入数字,应该会发现单元格A2不会更新(与迭代计算方法不同)。如果A2B2包含非数值型数据,我们使用Application.Sum而不是+运算符来避免Type Mismatch错误。

试试,看看它能不能达到你想要的效果。

编辑:

如果您有多行,您可以尝试如下所示。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54054949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档