Ric*_*yne 1 excel vba loops excel-formula
我几乎可以肯定答案是'不',但我想我会问这里的人,以防有一些我尚未找到的神奇配方......
所以我要说我有一张价值表;
我在某个地方还有另一个单元格(我只想说这个单元格是我的例子中的A1),其中有另一个数字.这个数字实际上是一个百分比(在本例中我们称之为20%)
所以我有一张看起来像这样的桌子
A B C D E
1 | 20
2 |
3 | Number
4 | 23
5 | 68
6 | 145
7 | 8
Run Code Online (Sandbox Code Playgroud)
解释它的最简单的方法是说我将按照单元格A1中给出的百分比减少每个数字(在我的例子中为20%).然后我将重复(因此将新值减少20%),直到答案为零(在此示例中舍入为2dp,尽管稍后可能需要或多或少舍入).我正在尝试计算公式必须运行多少次才能将值设置为0
就像我说的,我几乎可以肯定这不能在脚本之外完成(VBA等),因为据我所知excel公式不能循环和计数?
我也确定这实际上是一个非常简单的脚本(虽然我根本不了解VBA,所以对我来说这样做并不容易).我确信我可以用其他语言做到这一点.但那不会真正有用,因为我试图在excel中完全做到这一点.
我已经非常优雅地使用了另一张被复制的纸张上的公式(A1取出了原始值的百分比,A2取得了A1等值的百分比),然后我可以看到值达到的行数0,但我很想知道是否有更有效的解决方案; a)不使用VBA b)使用VBA正确地执行此操作(不重要,但我想知道如果有人可以完成它是如何完成的)
谢谢
我的解决方案是直接直接计算答案.
你正在寻找的东西是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)
Run Code Online (Sandbox Code Playgroud)
(1-A1)指的是一次迭代后剩余多少.
你说A1是一个百分比.如果你在excel中加入20%,它被视为0.2.
原来的公式应该是
0.0049 = A4*(0.8)^ n