你可以让Excel公式的迭代和计数循环

我几乎肯定答案是“不”,但我想我会问这里的人,以防万一有一些我还没有find的魔法公式…

所以我们可以说我有一张价值表。

我也有另一个单元格(让我只是说,这个单元格是我的例子A1),其中有另一个数字。 这个数字实际上是一个百分比(在这个例子中我们称它为20%)

所以我有一个看起来像这样的桌子

ABCDE 1 | 20 2 | 3 | Number 4 | 23 5 | 68 6 | 145 7 | 8 

最简单的解释方法就是说我要用单元格A1中给出的百分比来减less每个数字(在我的例子中是20%)。 然后我会重复(所以减less20%的新值),直到答案为零(在本例中四舍五入为2dp,尽pipe稍后我可能需要更多或更less的四舍五入)。 我正在尝试计算公式必须运行多less次才能将值设为0

就像我说的,我几乎可以肯定这是不能在脚本(VBA等)之外完成的,因为据我所知,excel公式不能循环和计数。

我也确定这实际上是一个非常简单的脚本(虽然我根本不了解VBA,所以对我来说不会那么容易)。 我敢肯定,我可以用其他语言做到这一点。 但是这样做不会真的有帮助,因为我试图在Excel中完全做到这一点。

我已经非常不合理地使用另一张纸上的公式(A1取原始值的百分比,A2取A1的值的百分比等),然后我可以看到哪个行号的值0,但我只是想知道是否有更有效的解决scheme; a)不使用VBA b)使用VBA正确地做(不重要,但我想看看如果有人可以做到这一点)

谢谢

我的解决scheme将直接计算答案。

你正在寻找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)是指一次迭代后剩下多less。

你说A1是一个百分比。 如果你在excel中放入20%,则它被视为0.2。

原来的公式应该是

0.0049 = A4 *(0.8)^ n

Excel使用某种“线性计算模型”,其中单元格中的公式根据其他单元格的值,使用函数和引用来确定单元格的值。 Excel维护一个依赖关系图,每当一个单元格更改值时,它会recursion地重新计算所有的依赖关系(因此依赖者的依赖关系也会重新计算)。

Excel中提供的唯一迭代是在公式的函数内部。

我相信可以在Excel中定义一个用户函数,您可以在单元格中使用公式。您需要的任何迭代都可以通过此函数(在VBA中)执行。

(Ps:Excel提供的另一个迭代是在循环引用中,当零或更多步后的单元格的依赖项作为自己的依赖项返回到单元格时,Excel会标记这个,但我相信这是可行的,指示Excel执行多less次迭代。)