The initial value (revenue, users, stock price, etc.).
The final value after the time period.
Years, months, or days between start and end.
Total Percentage Growth:0.00%
Compound Annual Growth Rate (CAGR):0.00%
Google Sheets Formula (Manual Method)
=((End/Start)^(1/N))-1
Google Sheets Formula (RRI Function)
=RRI(N, Start, End)
How to Calculate Growth Rate in Google Sheets
Calculating growth rates is one of the most common tasks performed in Google Sheets, whether you are analyzing financial revenue, website traffic, or investment portfolio performance. There are two primary ways to look at growth: Simple Growth Rate (total percentage change) and Compound Annual Growth Rate (CAGR).
1. Simple Percentage Growth Formula
This calculates the total change from point A to point B. It does not account for the time it took to grow. In Google Sheets, if your Start Value is in cell A1 and your End Value is in cell B1, the formula is:
=(B1-A1)/A1
Once entered, format the cell as a percentage by clicking the "%" button in the toolbar.
2. Compound Annual Growth Rate (CAGR) Formula
CAGR is vital when you want to know the steady annual growth rate required to get from the beginning value to the ending value over a specific number of periods (usually years). This smoothes out volatility.
Method A: The Mathematical Formula
You can type the math directly into Google Sheets. If A1 is Start, B1 is End, and C1 is the number of years:
=((B1/A1)^(1/C1))-1
Method B: The RRI Function
Google Sheets has a built-in function specifically for this called RRI. It calculates the equivalent interest rate for the growth of an investment.
Example: =RRI(5, 1000, 2500) would calculate the CAGR for growing from 1,000 to 2,500 over 5 periods.
Example Scenarios
Scenario
Start Value
End Value
Periods
Growth Rate
Startup Revenue (3 Years)
100,000
500,000
3
70.99% (CAGR)
Stock Portfolio (10 Years)
10,000
25,000
10
9.60% (CAGR)
MoM User Growth
500
650
1
30.00% (Simple)
Why Your Result Might Be Error (#DIV/0!)
If you see a division error in Google Sheets, it is likely because your Starting Value is 0. Mathematically, you cannot calculate a growth percentage from zero. To fix this in a sheet, you often need to use an IFERROR wrapper or start tracking from the first non-zero number.
function calculateGrowth() {
// 1. Get Elements
var startInput = document.getElementById("startVal");
var endInput = document.getElementById("endVal");
var periodInput = document.getElementById("periodCount");
var simpleResult = document.getElementById("simpleGrowthResult");
var cagrResult = document.getElementById("cagrResult");
var manualFormulaBox = document.getElementById("manualFormula");
var rriFormulaBox = document.getElementById("rriFormula");
var resultsArea = document.getElementById("results");
// 2. Parse Values
var start = parseFloat(startInput.value);
var end = parseFloat(endInput.value);
var periods = parseFloat(periodInput.value);
// 3. Validation
if (isNaN(start) || isNaN(end)) {
alert("Please enter valid numbers for Start and End values.");
return;
}
if (start === 0) {
alert("Starting Value cannot be zero for growth rate calculations.");
return;
}
// 4. Calculate Simple Growth
// Formula: (End – Start) / Start
var simpleGrowth = ((end – start) / start) * 100;
// 5. Calculate CAGR
// Formula: (End / Start)^(1/n) – 1
var cagr = 0;
var isValidCAGR = false;
if (!isNaN(periods) && periods > 0) {
// Check for negative base with fractional exponent which returns NaN in JS usually
if ((end / start) < 0) {
cagrResult.innerHTML = "N/A (Negative Trend)";
isValidCAGR = false;
} else {
cagr = (Math.pow((end / start), (1 / periods)) – 1) * 100;
cagrResult.innerHTML = cagr.toFixed(2) + "%";
isValidCAGR = true;
}
} else {
cagrResult.innerHTML = "Enter Periods";
}
// 6. Display Results
simpleResult.innerHTML = simpleGrowth.toFixed(2) + "%";
// Update Formula Text based on inputs
// Assume Start is A2, End is B2, Periods is C2 for the display example
var pVal = isNaN(periods) ? "N" : periods;
manualFormulaBox.innerHTML = "=((" + end + "/" + start + ")^(1/" + pVal + "))-1";
rriFormulaBox.innerHTML = "=RRI(" + pVal + ", " + start + ", " + end + ")";
resultsArea.style.display = "block";
}