如何在等式中重复 SUM 直到答案小于或等于 1?

如何在等式中重复 SUM 直到答案小于或等于 1?

基本方程

(J3+x)/150

将答案乘以然后x除以150并重复

( ((J3+x)/150)x )/150
(( ( ((J3+x)/150)x )/150 )x)/150

不断重复,直到最后一次重复的答案为<=1。将所有部分相加。

也许从视觉上看可以更好地解释这一点。 在此处输入图片描述

现在我只是将等式分解成几个单元格然后对它们求和,但是这样做效率极低。

A1: =(J3+x)/150
B1: =(((J3+x)/150)x)/150
C1: =(( (((J3+x)/150)x)/150 )x)/150
D1: =(( (( (((J3+x)/150)x)/150 )x)/150 )x)/150
E1: etc, etc

答案1

将以下内容用户定义函数 (UDF)在标准模块中:

Public Function deflime(J3 As Variant, x As Variant) As Double
    deflime = 0
    result = (J3 + x) / 150
    For i = 1 To 9999
        deflime = deflime + result
        If result <= 1 Then
            Exit Function
        End If
        result = x * result / 150
    Next i
End Function

用户定义函数 (UDF) 非常容易安装和使用:

  1. ALT-F11 打开 VBE 窗口
  2. ALT-I ALT-M 打开新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx

要删除 UDF:

  1. 调出如上所示的 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要从 Excel 使用 UDF:

=deflime(A1,B1)

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有关 UDF 的详细信息,请参阅:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必须启用宏才能使其工作!

以下是一个例子:

在此处输入图片描述

答案2

我看到您有一个 VBA 解决方案,但可以使用公式来实现。

假设你的“x”值在 J2 中,将此公式放入 J4 中,以得出首次使你达到 <= 1 的迭代次数

=MATCH(TRUE,(J3+J2)/150^{1,2,3,4,5,6,7,8,9,10}*J2^{0,1,2,3,4,5,6,7,8,9}<=1,0)

然后使用 J5 中的这个公式来获得最终值

=SUMPRODUCT((J3+J2)/150^ROW(INDIRECT("1:"&J4))*J2^(ROW(INDIRECT("1:"&J4))-1))

第一个公式将你限制为 10 次迭代,但你可以根据需要扩展它……甚至可以将这两个公式合并为一个“超级公式”

在我的测试中,这些公式给出的结果与 Gary's Student's UDF 的结果相同

相关内容