在期初值、期末值、期間、CAGR(%)這 4 個欄位中,輸入已知的 3 個,想求的 1 個保持空白,再按下「計算」。就會反推出空白的項目,並顯示逐年變化表和成長曲線。
這個頁面可以做什麼
- 由期初值、期末值、年數 3 個值,算出年複合成長率(CAGR)。例如「營收 5 年從 1000 萬元成長到 1610 萬元=每年平均約成長 10%」,是把高低起伏的成長,換算成「相當於每年都以相同的幾 % 持續成長」的值
- 在 4 個欄位(期初值、期末值、年數、CAGR)中輸入已知的 3 個,就能反推剩下的 1 個。「每年成長 10%,營收幾年後會翻倍?」(年數)、「每年成長 15%,5 年後會是多少?」(期末值)、「要達到目標,現在需要多少?」(期初值)都能計算
- 年數可以輸入像 2.5 年這樣的小數,也可以輸入像「18 個月」這樣的月數。達到目標所需的年數,會同時顯示小數和無條件進位後的年數(在第幾年達到)
- 逐年變化表,以及把成長曲線(期初值 × (1 + CAGR) 的年數次方)和「每年增加相同金額時的直線」疊在一起的圖表,讓您一眼看出與單純平均成長率的差別
這個計算有什麼用?
新創公司的事業計畫,或上市櫃公司的法說會簡報,常用「過去 3 年的 CAGR 為 25%」來表示營收或使用者人數的成長。例如營收 3 年從 2 億元成長到 3.9 億元,CAGR 就是 \((3.9 \div 2)^{1/3} - 1 \approx 0.249\),也就是約 25%。
即使每年的成長高低不一,也能用一個數字表示成長的速度,所以能比較規模和期間都不同的公司。不過它只看期初值和期末值 2 點,「只有最後一年突然大幅成長」這類內情就會被隱藏。閱讀資料時,最好也一起確認逐年的數字。
對於「每年持續成長 10%,營收幾年後會翻倍?」這個問題,用年數的公式可以回答 \(\log 2 \div \log 1.1 \approx 7.27\) 年,也就是在第 8 年年底超過 2 倍。反過來,如果目標是「5 年翻倍」,需要的 CAGR 是 \(2^{1/5} - 1 \approx 0.149\),可知每年需要約 14.9% 的成長。
把「每年要成長幾 % 才能達到目標」變成數字,就能拆解成每年的目標營收(逐年變化表)。
某個 App 的每月使用者人數 2 年從 5 萬人增加到 20 萬人(4 倍)時,CAGR 是 \(4^{1/2} - 1 = 1\),也就是每年 100%(每年翻倍)。另一個 App 如果是 4 年變成 4 倍,就是 \(4^{1/4} - 1 \approx 0.414\),每年約 41%。同樣是「4 倍」,成長速度卻完全不同,用 CAGR 就看得出來。
像使用者人數這種單位不是金額的數值,也能直接用相同的公式。
有「這個市場預計每年平均成長 8%」的預測時,目前 1000 億元的市場,5 年後可以估計為 \(1000 \times 1.08^5 \approx 1469\) 億元(期末值的公式)。產業報告中的「○ 年後的市場規模」,很多都是用這種計算做出來的。
要注意的是,這是建立在成長率今後也維持不變這個假設上的數字。使用前請先確認預測的前提(幾 % 持續幾年)。
某個鄉鎮的人口 10 年從 5 萬人減少到 4 萬人時,CAGR 是 \((4 \div 5)^{1/10} - 1 \approx -0.0221\),也就是每年約減少 2.2%。單純把「10 年減少 20%」除成「每年減少 2%」會有一點落差,是因為減少也是複利(以減少後的人口為基準再減少)。
減少時也用完全相同的公式,只是 CAGR 變成負值。如果以相同速度持續下去,幾年後會低於 3 萬人,也能用年數的公式反推。
例如 20 年前月薪 3 萬元的人,現在是 4.5 萬元,CAGR 就是 \((4.5 \div 3)^{1/20} - 1 \approx 0.0205\),每年約成長 2%。物價的上漲也能用相同的公式換算成「每年平均幾 %」,所以能用同一把尺比較薪水和物價的成長。
「把長期間的變化換算成年成長率」是 CAGR 的強項。看起來很大的「20 年增加 50%」,換算成年成長率只有 2%,是比較有感的數字。年增率每年不同時,CAGR 就是把它們平均成一個數字。
公式與圖表
符號與用語解說
符號
| CAGR | C-A-G-R | 年複合成長率(Compound Annual Growth Rate)。直譯是「以複利計算的年成長率」,表示「如果每年以相同比率持續成長,每年是幾 %」。本頁用符號 \(r\) 表示。 |
| \(V_0\) | V 下標 0 | 期初值(期間開始時的值)。\(V\) 是 value(值)的第一個字母,右下的 0 表示「第 0 年」。(例如 5 年前的營收 1000 萬元) |
| \(V_n\) | V 下標 n | 期末值(\(n\) 年後的值)。右下的 \(n\) 表示「第 \(n\) 年」。(例如今年的營收 1610.51 萬元) |
| \(G\) | G | 總成長倍數。期末值 ÷ 期初值(\(V_n \div V_0\)),表示整個期間變成了幾倍。取 growth(成長)的第一個字母。(例如 1000 萬元 → 1210 萬元,\(G = 1.21\)) |
| \(n\) | n | 年數。以年為單位表示從期初值到期末值的期間,取 number(數)的第一個字母。也可以是像 2.5 年這樣的小數(18 個月就是 \(18 \div 12 = 1.5\) 年)。 |
| \(r\) | r | 用小數表示的年複合成長率(CAGR),取 rate(率)的第一個字母。10% 就是 \(r = 0.1\),用 % 表示時要乘以 100。 |
| \(1 + r\) | 1 加 r | 每年的倍數。成長率 10% 就是 \(1 + 0.1 = 1.1\) 倍。是原本的 1 加上成長的部分 \(r\),\(n\) 年就連乘成 \((1 + r)^n\)。 |
| \(x^{1/n}\) | x 的 n 分之 1 次方 | \(x\) 的 \(1/n\) 次方=「\(n\) 次方後會等於 \(x\) 的數」(\(n\) 次方根 \(\sqrt[n]{x}\))。2 年是平方根,3 年是立方根。(例如 \(1.21^{1/2} = \sqrt{1.21} = 1.1\)) |
| \(\log\) | log | 對數(logarithm)。求「某個數的幾次方會等於這個值」的符號。本頁用它來反推年數,例如「1.1 的幾次方會等於 2」。底數用 10(常用對數)或 \(e\)(自然對數,\(\ln\))都可以,只要分子和分母相同,答案就一樣。 |
| \(g\) | g | 單純平均成長率。只是把總成長率除以年數的參考值。為了和 CAGR 的 \(r\) 區別而另用一個字母(和大寫的 \(G\)=總成長倍數也是不同的量)。 |
用語
| 年複合成長率 (CAGR) |
把幾年之間的成長,換算成「如果每年以相同比率持續成長,每年是幾 %」的值,也稱為年平均成長率。只由期初值、期末值和年數決定,中間的起伏不會納入計算。是以年成長率比較營收、使用者人數、市場規模、人口等成長的標準指標。 |
| 複利 | 增加的部分也會再以相同比率增加的成長方式(利滾利)。每年 10% 持續 2 年,不是「10% + 10% = 增加 20%」,而是 \(1.1 \times 1.1 = 1.21\) 倍(增加 21%)。CAGR 就是用這種複利的看法把成長平均化(相當於每年倍數的幾何平均數)。 |
| 幾何平均數 | 把 \(n\) 個數全部相乘再取 \(1/n\) 次方的平均。CAGR 是每年倍數的幾何平均數減 1,和一般的平均(相加再除,算術平均數)不同。像倍數這種以乘法相連的量,要用幾何平均數。 |
| 單純平均成長率 (算術平均數) |
只是把整個期間的成長率除以年數的值。是「每年增加相同金額」的直線看法,忽略了複利,所以期間超過 1 年的成長,會算得比 CAGR 大(減少時,每年的減少幅度會算得比 CAGR 小)。以年成長率來談時,CAGR 才是標準。 |
| 總成長倍數 | 期末值 ÷ 期初值,表示整個期間變成了幾倍。1000 萬元變成 1610.51 萬元,就是約 1.61 倍。減 1 再乘以 100,就是總成長率(約增加 61%)。 |
| n 次方根 | \(n\) 次方後會等於原數的數,寫成 \(\sqrt[n]{x}\) 或 \(x^{1/n}\)。2 年變成 1.21 倍時,每年的倍數是 \(\sqrt{1.21} = 1.1\) 倍,這就是 CAGR 計算的核心。 |
| 對數 (log) |
表示「\(a\) 的幾次方會等於 \(b\)」中「幾次方」的數,寫成 \(\log_{a} b\)。因為是求指數(相乘的次數),所以用來反推年數,例如「每年成長 10%,幾年會翻倍?」。 |
| 72 法則 | 「數值翻倍所需年數 ≈ 72 ÷ 年報酬率(%)」的心算估計法。每年 10% 約 7.2 年翻倍,每年 5% 約 14.4 年。和用對數算出的精確值非常接近。 |
| 年增率 (YoY) |
今年的值和去年相比的增減率,例如「營收年增 10%」。CAGR 相當於假設這個年增率每年都相同時的值。 |
建議先了解的基礎知識
為了讓您「理解意義」再使用本頁的計算,這裡整理了建議先了解的基礎知識。
遇到卡關時,回頭複習這些內容是最快的方法。
| 比率與百分率(國小五年級,10~11 歲) |
|
| 指數(國中七年級~高中,12~16 歲) |
|
| 複利的概念(國中~高中,12~18 歲) |
|
| n 次方根與指數的推廣(高中,15~18 歲) |
|
| 對數(高中,15~18 歲) |
|
| 代數式與等式的變形(國中七~八年級,12~14 歲) |
|
用 Excel 計算的方法
| 期初值 V0 | 1000 |
| 期末值 Vn | 1610.51 |
| 年數 n | 5 |
| CAGR r(%) | =((B2/B1)^(1/B3)-1)*100 |
| 期初值 V0 | 1000 |
| CAGR r(%) | 10 |
| 年數 n | 3 |
| 期末值 Vn | =B1*(1+B2/100)^B3 |
| 期末值 Vn | 1331 |
| CAGR r(%) | 10 |
| 年數 n | 3 |
| 期初值 V0 | =B1/(1+B2/100)^B3 |
| 期初值 V0 | 1000 |
| 期末值 Vn(目標) | 2000 |
| CAGR r(%) | 10 |
| 年數 n | =LN(B2/B1)/LN(1+B3/100) |
| 無條件進位後的年數 | =ROUNDUP(B4,0) |
| 期初值 V0 | 1000 |
| 期末值 Vn | 1210 |
| 年數 n | 2 |
| 單純平均成長率 g(%) | =(B2/B1-1)/B3*100 |
例如第 1 個表格的 B4 會顯示 10(CAGR 10%),第 2 個表格的 B4 顯示 1331(3 年後的值),第 3 個表格的 B4 顯示 1000(需要的期初值),第 4 個表格的 B4 顯示約 7.27(年數)、B5 顯示 8(無條件進位後的年數),第 5 個表格的 B4 顯示 10.5(單純平均成長率)。
「^(1/B3)」就是「1/n 次方」,「LN」是自然對數(以 \(e\) 為底的 log)。年數的公式改用「LOG10」或「LOG」,只要分子和分母用相同的函數,答案就一樣。
CAGR 也可以用 Excel 的函數「=RRI(年數,期初值,期末值)」求出(第 1 個表格就是「=RRI(B3,B1,B2)*100」)。
用 Google 試算表計算的方法
| 期初值 V0 | 1000 |
| 期末值 Vn | 1610.51 |
| 年數 n | 5 |
| CAGR r(%) | =((B2/B1)^(1/B3)-1)*100 |
| 期初值 V0 | 1000 |
| CAGR r(%) | 10 |
| 年數 n | 3 |
| 期末值 Vn | =B1*(1+B2/100)^B3 |
| 期末值 Vn | 1331 |
| CAGR r(%) | 10 |
| 年數 n | 3 |
| 期初值 V0 | =B1/(1+B2/100)^B3 |
| 期初值 V0 | 1000 |
| 期末值 Vn(目標) | 2000 |
| CAGR r(%) | 10 |
| 年數 n | =LN(B2/B1)/LN(1+B3/100) |
| 無條件進位後的年數 | =ROUNDUP(B4,0) |
| 期初值 V0 | 1000 |
| 期末值 Vn | 1210 |
| 年數 n | 2 |
| 單純平均成長率 g(%) | =(B2/B1-1)/B3*100 |
用 Python 計算的方法
import math
start_value = 1000 # 期初值(例如 5 年前的營收,單位:萬元)
end_value = 1610.51 # 期末值(例如今年的營收)
years = 5 # 年數
# CAGR = (期末值 / 期初值)^(1/年數) - 1
cagr = (end_value / start_value) ** (1 / years) - 1
print(f"CAGR:{cagr * 100:.2f}%")
# 參考:單純平均成長率 = 總成長率 / 年數
simple_avg = (end_value / start_value - 1) / years
print(f"單純平均成長率:{simple_avg * 100:.2f}%")
# 反推 1:由期初值和 CAGR 求 n 年後的值
rate = 0.10 # CAGR(10%)
future_value = start_value * (1 + rate) ** 3
print(f"3 年後的值:{future_value:.2f}")
# 反推 2:由期初值、目標值和 CAGR 求達到目標的年數
target_value = 2000
years_needed = math.log(target_value / start_value) / math.log(1 + rate)
print(f"翻倍所需年數:{years_needed:.2f}(無條件進位:{math.ceil(years_needed)})")
用 LaTeX 等數學式語言的寫法(可直接複製)
r = (Vₙ ÷ V₀)^(1/n) − 1
r = \left(\dfrac{V_n}{V_0}\right)^{1/n} - 1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>r</mi>
<mo>=</mo>
<msup>
<mrow>
<mo>(</mo>
<mfrac><msub><mi>V</mi><mi>n</mi></msub><msub><mi>V</mi><mn>0</mn></msub></mfrac>
<mo>)</mo>
</mrow>
<mrow><mn>1</mn><mo>/</mo><mi>n</mi></mrow>
</msup>
<mo>−</mo>
<mn>1</mn>
</mrow>
</math>
r = (V_n/V_0)^(1/n) - 1
(vn/v0)^(1/n) - 1
r := (V_n/V_0)^(1/n) - 1;
r = (V_n/V_0)^(1/n) - 1;
r = (V_n/V_0)^(1/n) - 1
Vₙ = V₀ × (1 + r)ⁿ
V_n = V_0 (1 + r)^{n}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>V</mi><mi>n</mi></msub>
<mo>=</mo>
<msub><mi>V</mi><mn>0</mn></msub>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>r</mi><mo>)</mo></mrow>
<mi>n</mi>
</msup>
</mrow>
</math>
V_n = V_0 (1 + r)^n
v0 (1 + r)^n
V_n := V_0*(1 + r)^n;
V_n = V_0*(1 + r)^n;
V_n = V_0 (1 + r)^n
V₀ = Vₙ ÷ (1 + r)ⁿ
V_0 = \dfrac{V_n}{(1 + r)^{n}}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>V</mi><mn>0</mn></msub>
<mo>=</mo>
<mfrac>
<msub><mi>V</mi><mi>n</mi></msub>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>r</mi><mo>)</mo></mrow>
<mi>n</mi>
</msup>
</mfrac>
</mrow>
</math>
V_0 = V_n/(1 + r)^n
vn/(1 + r)^n
V_0 := V_n/(1 + r)^n;
V_0 = V_n/(1 + r)^n;
V_0 = V_n/(1 + r)^n
n = log(Vₙ ÷ V₀) ÷ log(1 + r)
n = \dfrac{\log\left(V_n / V_0\right)}{\log(1 + r)}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>n</mi>
<mo>=</mo>
<mfrac>
<mrow><mi>log</mi><mo>(</mo><msub><mi>V</mi><mi>n</mi></msub><mo>/</mo><msub><mi>V</mi><mn>0</mn></msub><mo>)</mo></mrow>
<mrow><mi>log</mi><mo>(</mo><mn>1</mn><mo>+</mo><mi>r</mi><mo>)</mo></mrow>
</mfrac>
</mrow>
</math>
n = log(V_n/V_0)/log(1 + r)
Log[vn/v0]/Log[1 + r]
n := log(V_n/V_0)/log(1 + r);
n = log(V_n/V_0)/log(1 + r);
n = log(V_n/V_0)/log(1 + r)
g = (Vₙ ÷ V₀ − 1) ÷ n
g = \dfrac{V_n / V_0 - 1}{n}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>g</mi>
<mo>=</mo>
<mfrac>
<mrow><msub><mi>V</mi><mi>n</mi></msub><mo>/</mo><msub><mi>V</mi><mn>0</mn></msub><mo>−</mo><mn>1</mn></mrow>
<mi>n</mi>
</mfrac>
</mrow>
</math>
g = (V_n/V_0 - 1)/n
(vn/v0 - 1)/n
g := (V_n/V_0 - 1)/n;
g = (V_n/V_0 - 1)/n;
g = (V_n/V_0 - 1)/n
請 ChatGPT 幫忙計算的方法
你是事業計畫的助理。請務必實際執行 Python 程式碼來進行下列計算,並且只根據執行結果的數值回答(不要用心算或猜測來回答)。 某公司 5 年前的年營收是 1000 萬元,今年是 1610.51 萬元。 請求出下列各項: 1. 年複合成長率 CAGR((期末值 ÷ 期初值)^(1/年數)− 1,以 % 表示到小數第 2 位) 2. 參考用的單純平均成長率((期末值 ÷ 期初值 − 1) ÷ 年數,以 % 表示),並用 1~2 句話說明它和 CAGR 不同的原因 3. 如果這個 CAGR 持續下去,從期初起算 3 年後的營收(期初值 × (1 + CAGR)^3) 4. 以今年的營收為起點,用相同的 CAGR 成長,營收翻倍所需的年數(log(2) ÷ log(1 + CAGR),小數和無條件進位後的年數都要列出) 請列出計算時使用的公式,以及執行結果的數值。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權