2016-04-19 103 views
1

我幾乎可以肯定答案是'不',但我想我會問這裏的人,以防萬一有一些神奇的公式我還沒有找到..你可以讓Excel公式的迭代和計數循環

因此,讓我說我有一個值的表;

我也有另一個單元格的地方(讓我只是說這個單元格是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,但我只是想知道是否有更有效的解決方案; 一)不使用VBA這樣做正確(不重要使用VBA B),但我想看看它是如何做,如果任何人都可以)

感謝

回答

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的

+0

我打字相似,表明該的確可以用一個公式來完成的東西,+1 – tigeravatar

+0

我覺得我得到的第一部分(儘管0取整爲2位小數將會小於= 0.0049我認爲)...但是,您能解釋第一個公式中的(1-A1)^ n嗎?我得到^ n是循環的數量,但爲什麼1-A1?在我上面的例子中,那麼這個公式將變成23 * -19^n,我無法得到我的頭... –

+1

添加評論以上 – gtwebb

0

Excel使用某種形式的「線性計算的模型「,其中單元格中的公式根據其他單元格的值,使用函數和引用來確定單元格的值。 Excel維護一個依賴關係圖,每當一個單元格更改值時,它會遞歸地重新計算所有依賴關係(因此也會重新計算依賴項的依賴項)。

Excel在此模型中提供的唯一迭代在公式的函數內。

我相信它可以在Excel中定義一個用戶函數,您可以在單元格中使用公式。您需要的任何迭代都可以通過此函數(在VBA中)執行。 (Ps:Excel提供的另一個迭代是在循環引用中,當零或多個步驟後的單元格的依賴項作爲它自己的依賴項返回到單元格時,Excel將標記這個,但我相信它是possibe允許此並指示Excel執行多少次迭代。)