我几乎可以肯定答案是'不',但我想我会问这里的人,以防有一些我尚未找到的神奇配方......
所以我想说我有一个价值表;
我还在某个地方有另一个单元格(我只想说这个单元格是我的例子中的A1),其中有另一个数字。这个数字实际上是一个百分比(在本例中我们称之为20%)
所以我有一张看起来像这样的表
A B C D E
1 | 20
2 |
3 | Number
4 | 23
5 | 68
6 | 145
7 | 8
最简单的解释方法是说我要按照单元格A1中给出的百分比减少每个数字(在我的例子中为20%)。然后我将重复(因此将新值减少20%),直到答案为零(在此示例中舍入为2dp,尽管稍后可能需要或多或少舍入)。 我正在尝试计算公式必须运行多少次以使值为0
就像我说的,我几乎可以肯定这不能在脚本之外完成(VBA等),因为据我所知excel公式不能循环和计数?
我也确定这实际上是一个非常简单的脚本(虽然我根本不了解VBA,所以对我来说这样做并不容易)。我确信我可以用其他语言做到这一点。但那时候这并不会真正有所帮助,因为我试图在excel中完全做到这一点。
我已经非常优雅地使用了另一张被复制的纸张上的公式(A1取出了原始值的百分比,A2取得了A1等值的百分比),然后我可以看到哪个行号价值达到0,但我很想知道是否有更有效的解决方案; a)不使用VBA b)使用VBA正确地做到这一点(不重要,但我想知道如果有人可以做到这一点)
由于
答案 0 :(得分:5)
我的解决方案是直接直接计算答案。
您正在寻找的内容为0舍入到2位小数,因此< 0.0049 您的公式变为
0.0049 = A4 *(1-A1)^ n
ln(0.0049)= ln(A4)+ n * ln(1-A1)
n =(ln(0.0049)-ln(a4))/ ln(1-A1)
由于你需要一个完整的循环数,你可以使用下一个数字,因此最终的等式是
=ceiling((ln(0.0049)-ln(a4))/ln(1-A1),1)
(1-A1)指的是一次迭代后剩余多少。
你说A1是一个百分比。如果你在excel中加入20%,则将其视为0.2。
原始公式应为
0.0049 = A4 *(0.8)^ n
答案 1 :(得分:0)
Excel使用某种"线性计算模型"其中,单元格中的公式使用函数和引用,根据其他单元格的值确定单元格的值。 Excel维护一个依赖图,每当一个单元格改变值时,它会递归地重新计算所有依赖项(因此依赖项的依赖项也会被重新计算)。
Excel在此模型中提供的唯一迭代是在公式的函数内。
我相信在Excel中可以定义一个可以在单元格中的公式中使用的用户函数。您需要的任何迭代都可以通过此函数执行(在VBA中)。
(Ps:Excel提供的另一个迭代是在循环引用中,当一个单元的依赖项在零个或多个步骤之后作为其自身的依赖返回到单元格.Excel将标记此但我相信它可以允许这个并指示Excel要执行多少次迭代。)