GROWTH Function: Exponential Trend Prediction in Excel

Tutorial Blog on GROWTH Function Exponential Trend Prediction in Excel Feature Image

Linear trends add a fixed amount each period. Exponential trends multiply by a fixed rate. User counts that double every six months, revenue compounding at 15% per year, bacteria populations tripling every hour — none of these follow a straight line. The GROWTH function fits a curved exponential trend to your data and uses it to predict future values. It is the exponential counterpart to TREND, and the right choice whenever percentage-rate growth is the underlying pattern.

This guide covers the full syntax, the relationship between GROWTH and LOGEST, and six practical examples including compound revenue forecasting, user growth modelling, comparing exponential to linear predictions, and fitting a multi-variable exponential curve. Along the way, you will learn when GROWTH fits better than FORECAST.LINEAR and how to diagnose a poor fit.

Availability: GROWTH is available in all Excel versions, including Microsoft 365, Excel 2024, 2021, 2019, 2016, and earlier. It also works in Google Sheets. In Excel 2019 and earlier, GROWTH returns an array and requires Ctrl+Shift+Enter when used on multiple new_x values. In Excel 365, it spills automatically.

What Is Exponential Growth?

Exponential growth occurs when a value increases by a constant percentage each period, not a constant amount. The mathematical form is y = b × mₓ, where b is the starting value, m is the growth factor per period, and x is the time step. For example, a growth factor of 1.15 means 15% increase per period. A factor of 2 means the value doubles each period.

Crucially, exponential growth curves upward more steeply over time. Early periods show modest absolute changes. Later periods show dramatic jumps — even though the percentage rate stays constant. Specifically, this shape is the hallmark of compound interest, viral adoption curves, and biological population growth. GROWTH fits this curve to historical data and extrapolates it forward.

What Is the GROWTH Function Syntax?

=GROWTH(known_y, [known_x], [new_x], [const])
ArgumentRequired?What it does
known_yRequiredThe historical y-values (your outcome variable — sales, users, revenue). Must be positive numbers. GROWTH cannot fit a curve to negative or zero values.
known_xOptionalThe x-values corresponding to known_y. If omitted, Excel uses {1, 2, 3, ...} automatically. Can be a single column (simple) or multiple columns (multiple regression).
new_xOptionalThe x-values for which you want predictions. If omitted, GROWTH returns fitted values for the historical x range (useful for checking model fit).
constOptionalTRUE (default) = fit both b and m normally. FALSE = force b = 1, fitting only the growth rate m. Use FALSE only for theoretical models where the baseline must be exactly 1.
GROWTH requires positive y-values: The function fits a curve of the form y = b × mₓ using logarithms internally. Zero and negative y-values cannot be log-transformed. If your data contains zeros or negatives, GROWTH returns #NUM!. In that case, shift the data by a constant to make all values positive, or switch to TREND for linear modelling.

How Does GROWTH Compare to TREND and LOGEST?

Three functions work together in Excel’s trend family, and understanding all three helps you choose correctly. First, TREND fits and predicts from a linear model. Second, GROWTH fits and predicts from an exponential model. LOGEST, by contrast, returns the exponential model coefficients (b and m) rather than predictions — the exponential equivalent of LINEST. Understanding how they relate helps you choose the right tool for each task.

FunctionModel typeReturnsUse when
TRENDLinear: y = mx + bPredicted y-valuesData grows by a fixed amount per period
GROWTHExponential: y = b×mₓPredicted y-valuesData grows by a fixed percentage per period
LINESTLinearModel coefficients (slope, intercept, R², etc.)You need the model parameters, not predictions
LOGESTExponentialModel coefficients (m, b, R², etc.)You need the growth rate and base, not predictions
When to choose GROWTH over TREND: Plot your data first. If the points curve upward with accelerating slope, use GROWTH. If they follow a straight line, use TREND. Alternatively, compare R² values: LOGEST(known_y, known_x, TRUE, TRUE) returns R² for the exponential fit. LINEST does the same for linear. The higher R² indicates the better model.

Examples 1–4: Core GROWTH Patterns

1
Basic exponential forecast — predict future revenue from historical growth

The fundamental use is passing known_y (historical values) and new_x (future periods) to get predictions. GROWTH then fits the exponential curve to the history and evaluates it at the future x-positions. In Excel 365, entering with an array of new_x values spills the full forecast column automatically.

Year
Revenue
Year
GROWTH
TREND
Difference
1
100
6
161
140
+21
2
118
7
188
153
+35
3
141
8
219
165
+54
Revenue history: B2:B5 = {100, 118, 141, 166} (years 1–4). A2:A5 = {1, 2, 3, 4} (known x-values). D2:D4 = {5, 6, 7} (years to forecast). Single future prediction for year 5: =GROWTH($B$2:$B$5, $A$2:$A$5, D2) → 196 (year 5 prediction) Array of future predictions — Excel 365, enters in E2 and spills: D2:D4 = years 5, 6, 7. Results appear in E2:E4 automatically. =GROWTH($B$2:$B$5, $A$2:$A$5, D2:D4) Excel 2019 and earlier — select E2:E4, type formula, Ctrl+Shift+Enter: Curly braces { } appear in the formula bar to confirm array entry. {=GROWTH($B$2:$B$5, $A$2:$A$5, D2:D4)} Comparison: TREND prediction for the same future periods: TREND fits a straight line — it gives lower values when growth is accelerating. =TREND($B$2:$B$5, $A$2:$A$5, D2) → 179 (underestimates when growth is exponential)
2
Fitted values — check model fit on historical data

Omitting new_x from GROWTH returns the fitted values for the historical x range. Comparing fitted values to actuals shows how well the curve describes the data. Large residuals indicate a poor fit. This is the first diagnostic step before committing to exponential forecasting.

B2:B10 = actual values. A2:A10 = x-values (periods 1–9). Get fitted values for the historical range — omit new_x entirely: Excel 365 — enter in C2, spills to C10. =GROWTH(B2:B10, A2:A10) → Returns 9 fitted values alongside the 9 actuals Residuals — difference between actual and fitted (in D2, copy down): Positive residual = actual was above the fitted curve. Negative residual = actual was below the fitted curve. B2 - C2 → Copy D2 down to D10 to get all residuals MAPE — mean absolute percentage error across the fitted range: Measures average error as a percentage of the actual values. Below 10% suggests a good exponential fit. =AVERAGE(ABS((B2:B10 - =GROWTH(B2:B10, A2:A10)) / B2:B10)) → MAPE as a decimal (multiply by 100 for percentage) R² of the exponential fit — use LOGEST with stats = TRUE: LOGEST row 3, column 1 contains R² for the exponential model. =INDEX(LOGEST(B2:B10, A2:A10, TRUE, TRUE), 3, 1) → R² for the exponential model (compare to LINEST R² for model selection)
3
Extract growth rate — find the implied percentage growth per period

LOGEST additionally returns the exponential model coefficients. The first value is the growth factor m, which is the multiplier applied each period. Subtracting 1 converts it to a percentage growth rate. This rate is the core business insight: the average compound growth rate implied by the historical data.

LOGEST output
Value
Meaning
As percentage
Growth factor m
1.167
Multiplier per period
16.7% per year
Intercept b
87.4
Starting value at x=0
B2:B5 = revenue history. A2:A5 = year numbers (1–4). LOGEST returns a 2-column array: [m, b] in row 1. Extract the growth factor m (column 1 of LOGEST row 1): =INDEX(LOGEST(B2:B5, A2:A5), 1, 1) → 1.167 (growth factor per period) Convert to percentage growth rate: (m − 1) × 100 =INDEX(LOGEST(B2:B5, A2:A5), 1, 1) - 1 → 0.167 (16.7% compound growth rate per period) Format as a readable percentage label: =TEXT(INDEX(LOGEST(B2:B5, A2:A5), 1, 1) - 1, "0.0%") → "16.7%" (compound annual growth rate implied by the data) Verify: apply the rate to project forward from a base value. This confirms GROWTH and the manual rate calculation agree. =GROWTH($B$2:$B$5, $A$2:$A$5, 5) = INDEX(LOGEST(B2:B5,A2:A5),1,2) * INDEX(LOGEST(B2:B5,A2:A5),1,1)^5 → TRUE (GROWTH and b×mₓ always agree)
4
User growth modelling — viral adoption with percentage-rate expansion

SaaS products, mobile apps, and social networks often grow exponentially in early stages. Specifically, each new user can refer others, creating a compounding effect. GROWTH captures this pattern and also helps project the inflection point where growth begins to slow. Early-stage modelling with GROWTH helps set realistic targets and identify when linear capacity planning will underestimate demand.

Monthly active users: B2:B13 = 12 months of history (months 1–12). A2:A13 = month numbers. D2:D7 = months 13–18 to forecast. Forecast MAU for months 13–18 (Excel 365 — spills from E2): Seasonality = 0 since growth is a smooth exponential, not seasonal. =GROWTH($B$2:$B$13, $A$2:$A$13, D2:D7) → Projected MAU for months 13–18 Month-over-month growth rate implied by the model: Compare GROWTH predictions for two adjacent periods. (Month n+1 forecast / Month n forecast) − 1 = implied MoM rate. =GROWTH($B$2:$B$13, $A$2:$A$13, 14) / =GROWTH($B$2:$B$13, $A$2:$A$13, 13) - 1 → Implied MoM growth rate (same as the LOGEST m factor − 1) Flag when GROWTH forecast exceeds a capacity threshold: D5 = capacity ceiling (e.g. server capacity or team bandwidth). Returns the first month where forecast exceeds capacity. =MATCH(TRUE, =GROWTH($B$2:$B$13, $A$2:$A$13, D2:D12) > $D$5, 0) → Returns row offset of first month exceeding capacity (Ctrl+Shift+Enter in 2019)

Examples 5 and 6: Applied Growth Scenarios

Compound Financial Projections and Model Comparison

5
Compound revenue projection — applying GROWTH to financial planning

Financial models frequently assume compound growth rates. GROWTH translates that assumption directly into projected values — no need to manually chain percentage increases. Additionally, combining GROWTH with LOGEST lets you build a self-updating model where the implied growth rate adjusts automatically as new actual data is added to the history.

Annual revenue history in B2:B6 (5 years). Year numbers in A2:A6. New fiscal years to project in D2:D5 (years 6–9). Five-year exponential revenue projection: Excel 365 — enter in E2 and spills down to E5. =GROWTH($B$2:$B$6, $A$2:$A$6, D2:D5) → Revenue projections for years 6–9 Cumulative projected revenue — sum of GROWTH output: F2 = total projected revenue across the forecast horizon. =SUM(=GROWTH($B$2:$B$6, $A$2:$A$6, D2:D5)) → Total projected revenue across years 6–9 Implied CAGR label — compound annual growth rate in the history: Displays as "CAGR: 18.3%" — a self-updating model descriptor. "CAGR: " & TEXT(INDEX(LOGEST($B$2:$B$6,$A$2:$A$6),1,1)-1, "0.0%") → "CAGR: 18.3%" (updates automatically as history extends) Show the growth in a single cell as "Year 6: £2.4M": Rounds to one decimal and adds unit label. "Year 6: £" & TEXT(=GROWTH($B$2:$B$6,$A$2:$A$6,6)/1000000, "0.0") & "M"
6
Model comparison — exponential vs linear fit selection

Choosing between GROWTH and TREND should be based on data, not assumption. The right approach is therefore to compare R² from both models and inspect the residuals. A higher R² indicates better fit. Specifically, systematically curved residuals indicate the wrong model type was chosen.

B2:B12 = 11 periods of observed data. A2:A12 = period numbers (1–11). R² of the exponential fit (LOGEST with stats = TRUE): Row 3, column 1 of LOGEST output contains R². =INDEX(LOGEST(B2:B12, A2:A12, TRUE, TRUE), 3, 1) → R² for exponential model (e.g. 0.987) R² of the linear fit (LINEST with stats = TRUE): Row 3, column 1 of LINEST output contains R². =INDEX(LINEST(B2:B12, A2:A12, TRUE, TRUE), 3, 1) → R² for linear model (e.g. 0.954) Automatic model selector — compare R² and return the better model name: D2 = exponential R², D3 = linear R². =IF(D2 > D3, "Use GROWTH (exponential R² = " & TEXT(D2,"0.000") & ")", "Use TREND (linear R² = " & TEXT(D3,"0.000") & ")") → "Use GROWTH (exponential R² = 0.987)" Residual check — sign pattern reveals model mismatch: If residuals (actual − fitted) curve systematically (all positive then all negative, or all negative then all positive), the trend type is wrong. Random, evenly scattered residuals confirm the model fits well.
A quick visual check: plot the data on a chart. If the curve bends upward with increasing steepness, GROWTH is likely correct. If the chart shows a straight line, TREND is better. Use R² comparison to confirm. Neither model is always right — the data decides.

Common Issues and How to Fix Them

#NUM! error from GROWTH

GROWTH returns #NUM! when the known_y values contain zeros or negatives. The exponential model requires strictly positive values because it uses logarithms internally. To fix this, check the data for zeros caused by missing entries and replace them with interpolated estimates. If negative values are genuine — for example, profit/loss figures that swing below zero — switch to TREND, which handles any sign. Alternatively, shift all values up by a constant to make them positive, then subtract that constant from the predictions.

GROWTH predictions grow unrealistically fast

Exponential models are particularly sensitive to the training data. A short history with unusually strong recent growth produces a very steep implied growth rate, and projections quickly become implausible. Consequently, the further you project, the less reliable the result. As a practical rule, treat GROWTH forecasts beyond two to three times the length of the historical data with caution. Sense-check the implied growth rate from LOGEST against known market constraints.

Results differ from what TREND returns for the same data

GROWTH and TREND are fundamentally different models. They always produce different results unless the data is perfectly linear. That difference is not an error — it is the whole point. Compare R² from LOGEST and LINEST to determine which model fits better. Also note that GROWTH in Excel 2019 and earlier requires Ctrl+Shift+Enter for multiple predictions. Entering normally with a single-cell formula returns only one value regardless of the new_x array size.

Exponential models diverge rapidly: A 15% annual growth rate doubles a value roughly every five years. A 25% rate doubles it in under three years. Small differences in the estimated growth rate produce large differences in long-range projections. Always report confidence ranges alongside GROWTH forecasts and revisit the model regularly as new data arrives. Never present a single GROWTH point estimate as a definitive prediction.

Frequently Asked Questions

  • What is the difference between GROWTH and TREND?+
    TREND fits a straight line (y = mx + b) to your data. GROWTH fits an exponential curve (y = b×mₓ). Use TREND when values increase by a roughly constant absolute amount each period. Use GROWTH when values increase by a roughly constant percentage each period. The easiest check is to plot the data — a straight-line chart means TREND; an upward-curving chart with accelerating slope means GROWTH. You can also compare R² values from LINEST and LOGEST to see which model fits better.
  • How do I use GROWTH in Excel 2019 and earlier?+
    In Excel 2019 and earlier, GROWTH is an array function when new_x contains multiple values. To produce a forecast for several future periods, select the output range first (e.g. E2:E6 for five forecasts), type the formula, and press Ctrl+Shift+Enter instead of Enter. Curly braces appear in the formula bar to confirm array entry. In Excel 365 and Excel 2021, GROWTH spills automatically — enter in a single cell with a multi-value new_x and the results fill as many rows as needed without any special entry.
  • What does the const argument do in GROWTH?+
    The const argument controls whether the model includes a free intercept (b). When const = TRUE (the default), GROWTH fits both b and m, finding the best-fitting starting value and growth factor for your data. When const = FALSE, GROWTH forces b = 1 and fits only the growth rate m. The FALSE option is mainly for theoretical models where the process must start at exactly 1 — for example, an index normalised to 1 at time zero. For almost all business and financial applications, use the default TRUE.

More Questions About GROWTH

  • What is the relationship between GROWTH and LOGEST?+
    GROWTH and LOGEST fit the same exponential model. The difference is in what they return. GROWTH uses the fitted model to generate predicted y-values for given x-values. LOGEST returns the model coefficients themselves — the growth factor m and the intercept b — along with statistics such as R² and standard errors when called with stats = TRUE. Use GROWTH when you want predictions. Use LOGEST when you need to understand the model or extract the implied growth rate. You can verify they are consistent: GROWTH(y, x, n) always equals INDEX(LOGEST(y,x),1,2) × INDEX(LOGEST(y,x),1,1)ₓ.
  • Can GROWTH handle multiple x-variables?+
    Yes. GROWTH supports multiple predictor variables by passing a multi-column known_x range. For example, if growth depends on both time and a marketing spend variable, you can pass a two-column array as known_x. Excel fits an exponential model of the form y = b × m1ₓ¹ × m2ₓ², where each column has its own growth factor. This is less commonly used than the single-variable form, but it is useful for models where growth is driven by multiple measurable factors simultaneously.
  • How far into the future can I forecast with GROWTH?+
    There is no technical limit. GROWTH will compute a prediction for any x-value you provide. However, the practical reliability of exponential forecasts deteriorates quickly with distance from the last observation. A good rule of thumb is to limit forecasts to roughly the same length as the historical dataset. For a 3-year history, forecasts beyond 3 years become increasingly speculative. Always accompany long-range exponential forecasts with explicit uncertainty acknowledgement and sense-check the implied values against known market size or physical constraints.