Financial ModelingIntermediate12 min read

Build a 5-Year Projection in Google Sheets

Build and verify a five-year Google Sheets forecast with revenue, expenses, cash, scenarios, formulas, and reconciliation checks.

Download the editable five-year projection workbook below and import it into Google Sheets, or follow the cell-by-cell instructions to build your own. The completed workbook forecasts FY2027 through FY2031, switches among 3 scenarios, and includes visible reconciliation checks for revenue, EBITDA, and cash.

The example uses annual calendar periods and USD. It covers revenue, COGS, gross profit, operating expenses, EBITDA, net cash change, and ending cash.

To keep the example reproducible, net cash change equals EBITDA. Taxes, working capital, capital expenditure, financing, depreciation, and balance-sheet forecasting are excluded.

What You'll Need

  • A blank Google Sheets workbook
  • FY2026 revenue, operating expenses, and closing cash inputs
  • Permission to edit the workbook
  • A decision to use calendar years from January 1 through December 31

Step-by-Step Guide

1

Define what the projection template must include

Download the editable projection workbook (.xlsx). It contains the two tabs, formulas, three scenarios, reconciliation checks, and illustrative values used in this guide. No sign-up is required.

To use it in Google Sheets, open a new spreadsheet, choose File > Import > Upload, select the downloaded workbook, and import it as a new spreadsheet. Keep the original download as a reference copy. Google documents the supported import options in its Excel-to-Sheets guide.

Start with the Base case. Confirm FY2031 EBITDA of $202,371.06, ending cash of $838,262.18, and all 15 check cells showing OK before changing the editable input cells. Then select Optimistic and Conservative in Assumptions!B2 and compare the scenario totals shown below. If imported formulas or dates differ, stop and inspect them before using the output.

This is a compact operating projection, not an investor-ready three-statement forecast. Its cash row deliberately equals EBITDA before excluded cash items; do not use that row as a real cash-flow forecast until those components are modeled.

A five-year financial projection template should separate inputs from calculations and clearly define its forecast periods. Whether you use an existing template or build one, check that it has:

  • A dedicated assumptions area
  • Actual date values for each forecast year
  • Revenue, COGS, gross profit, operating expenses, and EBITDA
  • A cash roll-forward
  • Base, optimistic, and conservative scenarios
  • Formulas that can be inspected
  • Checks tying subtotals and cash movements together

Don’t select a template solely because it has polished formatting. First, determine whether its formulas, units, period definitions, and scenario mechanics are visible.

For this example, create exactly 2 tabs:

  1. Assumptions
  2. Projection
    Assumptions and opening balances feed five forecast years; scenario changes recalculate cash and funding needs.
    2

    Enter the opening assumptions and scenario table

    On the Assumptions tab, enter these labels and illustrative values:

    CellEntryMeaning
    A2Selected scenarioInput label
    B2BaseActive scenario
    A4FY2026 revenueInput label
    B4500000FY2026 revenue in USD
    A5FY2026 operating expensesInput label
    B5220000FY2026 operating expenses in USD
    A6Opening cash at 12/31/2026Input label
    B6100000Cash immediately before FY2027
    A8Selected revenue growthCalculated label
    A9Selected OpEx growthCalculated label
    A10Selected gross marginCalculated label

    Next, enter the scenario table in A13:D16:

    ScenarioRevenue growthOpEx growthGross margin
    Base10%5%60%
    Optimistic15%7%63%
    Conservative3%4%55%

    Revenue and OpEx growth can legitimately exceed 100%; 150% growth multiplies the prior amount by 2.5. This worked template deliberately limits growth to -100% through 100% as an illustrative input policy, not as a mathematical bound on growth. If your forecast needs a higher growth rate, change the upper limit consistently in data validation, the selected-rate formulas in Assumptions!B8:B9, and the Projection growth guards, then rerun the boundary and reconciliation checks. The 0% through 100% gross-margin limit is a different constraint and remains in place.

    The scenario names must use exactly the capitalization shown.

    Apply these data-validation rules through Data > Data validation > Add rule:

    • B2: dropdown containing Base, Optimistic, and Conservative; reject invalid entries.
    • B4:B6: number greater than or equal to 0.
    • B14:C16: number between -100% and 100%.
    • D14:D16: number between 0% and 100%.

    Format B4:B6 as USD and B14:D16 as percentages. Also format Assumptions!B8:B10 as percentages; these calculated cells do not automatically inherit the scenario-table format. The formulas below also check data types and permitted ranges, keeping invalid assumptions visible when the source cells don’t contain valid numbers.

      3

      Connect the selected scenario to the assumptions

      The selected-rate formulas must validate both the scenario name and its corresponding rate cell. This prevents a blank scenario-rate cell from being treated as 0%.

      Enter this formula in Assumptions!B8:

      =IF(AND(SUMPRODUCT(--EXACT($B$2,$A$14:$A$16))=1,SUMPRODUCT(--EXACT($B$2,$A$14:$A$16),--ISNUMBER($B$14:$B$16),--($B$14:$B$16>=-100%),--($B$14:$B$16<=100%))=1),INDEX($B$14:$B$16,MATCH(TRUE,EXACT($B$2,$A$14:$A$16),0)),NA())
      

      With B2 set to Base, the expected result is 10%.

      Enter this formula in Assumptions!B9:

      =IF(AND(SUMPRODUCT(--EXACT($B$2,$A$14:$A$16))=1,SUMPRODUCT(--EXACT($B$2,$A$14:$A$16),--ISNUMBER($C$14:$C$16),--($C$14:$C$16>=-100%),--($C$14:$C$16<=100%))=1),INDEX($C$14:$C$16,MATCH(TRUE,EXACT($B$2,$A$14:$A$16),0)),NA())
      

      The expected Base result is 5%.

      Enter this formula in Assumptions!B10:

      =IF(AND(SUMPRODUCT(--EXACT($B$2,$A$14:$A$16))=1,SUMPRODUCT(--EXACT($B$2,$A$14:$A$16),--ISNUMBER($D$14:$D$16),--($D$14:$D$16>=0),--($D$14:$D$16<=100%))=1),INDEX($D$14:$D$16,MATCH(TRUE,EXACT($B$2,$A$14:$A$16),0)),NA())
      

      The expected Base result is 60%.

      Together, these formulas require exactly one case-sensitive scenario match and a numeric rate within the applicable bounds. A blank selection, lowercase base, unknown scenario, duplicate exact scenario name, blank rate, text rate, or out-of-range rate returns #N/A.

        4

        Set up the five-year projection periods

        On the Projection tab, enter:

        CellEntry
        A1Metric
        A3Revenue
        A4COGS
        A5Gross profit
        A6Operating expenses
        A7EBITDA
        A8Net cash change
        A9Ending cash
        A11Revenue check
        A12EBITDA check
        A13Cash check

        Then enter actual dates across row 1:

        B1: =DATE(2027,12,31)
        C1: =DATE(2028,12,31)
        D1: =DATE(2029,12,31)
        E1: =DATE(2030,12,31)
        F1: =DATE(2031,12,31)
        

        Each column covers the inclusive calendar year from January 1 through December 31. Apply the custom number format "FY"yyyy so the cells display as FY2027 through FY2031 while preserving the underlying date values.

        Before moving on, confirm that there are no skipped or duplicate years and that opening cash in Assumptions!B6 is measured at December 31, 2026.

          5

          Build the revenue, cost, and EBITDA forecast

          Start by entering the first-year revenue formula in Projection!B3:

          =IF(AND(ISNUMBER(Assumptions!$B$4),Assumptions!$B$4>=0,ISNUMBER(Assumptions!$B$8),Assumptions!$B$8>=-100%,Assumptions!$B$8<=100%),Assumptions!$B$4*(1+Assumptions!$B$8),NA())
          

          With FY2026 revenue of 500000 and Base growth of 10%, the expected result is:

          500000 × 1.10 = 550000
          

          Enter this formula in Projection!C3 and copy it through F3:

          =IF(AND(ISNUMBER(B3),B3>=0,ISNUMBER(Assumptions!$B$8),Assumptions!$B$8>=-100%,Assumptions!$B$8<=100%),B3*(1+Assumptions!$B$8),NA())
          

          Next, enter the COGS formula in Projection!B4 and copy it through F4:

          =IF(AND(ISNUMBER(B3),B3>=0,ISNUMBER(Assumptions!$B$10),Assumptions!$B$10>=0,Assumptions!$B$10<=100%),B3*(1-Assumptions!$B$10),NA())
          

          For FY2027, expected COGS is:

          550000 × (1 - 60%) = 220000
          

          Enter the gross-profit formula in Projection!B5 and copy it through F5:

          =IF(AND(ISNUMBER(B3),ISNUMBER(B4)),B3-B4,NA())
          

          Expected FY2027 gross profit is:

          550000 - 220000 = 330000
          

          Now enter the first-year operating-expense formula in Projection!B6:

          =IF(AND(ISNUMBER(Assumptions!$B$5),Assumptions!$B$5>=0,ISNUMBER(Assumptions!$B$9),Assumptions!$B$9>=-100%,Assumptions!$B$9<=100%),Assumptions!$B$5*(1+Assumptions!$B$9),NA())
          

          Expected FY2027 operating expenses are:

          220000 × 1.05 = 231000
          

          Enter this formula in Projection!C6 and copy it through F6:

          =IF(AND(ISNUMBER(B6),B6>=0,ISNUMBER(Assumptions!$B$9),Assumptions!$B$9>=-100%,Assumptions!$B$9<=100%),B6*(1+Assumptions!$B$9),NA())
          

          Finally, enter the EBITDA formula in Projection!B7 and copy it through F7:

          =IF(AND(ISNUMBER(B5),ISNUMBER(B6)),B5-B6,NA())
          

          Expected FY2027 EBITDA is:

          330000 - 231000 = 99000
          

          Negative EBITDA is allowed and should remain visible. It’s a forecast result, not an invalid input.

            6

            Complete the simplified cash roll-forward

            In this limited example, EBITDA equals net cash change. Enter this formula in Projection!B8 and copy it through F8:

            =IF(ISNUMBER(B7),B7,NA())
            

            For the first year, enter the ending-cash formula in Projection!B9:

            =IF(AND(ISNUMBER(Assumptions!$B$6),Assumptions!$B$6>=0,ISNUMBER(B8)),Assumptions!$B$6+B8,NA())
            

            Expected FY2027 ending cash is:

            100000 + 99000 = 199000
            

            Enter this formula in Projection!C9 and copy it through F9:

            =IF(AND(ISNUMBER(B9),ISNUMBER(C8)),B9+C8,NA())
            

            For FY2028, the expected calculation is:

            199000 + 120450 = 319450
            

            A negative cash change can produce negative ending cash. Keep that result visible for review instead of converting it to zero.

            Format B3:F9 as USD with 2 decimal places. The formulas retain their underlying precision even when fewer decimals appear.

              7

              Verify the Base projection and compare scenarios

              With Assumptions!B2 set to Base, the exact expected values before display rounding are:

              MetricFY2027FY2028FY2029FY2030FY2031
              Revenue550000605000665500732050805255
              COGS220000242000266200292820322102
              Gross profit330000363000399300439230483153
              Operating expenses231000242550254677.5267411.375280781.94375
              EBITDA99000120450144622.5171818.625202371.05625
              Net cash change99000120450144622.5171818.625202371.05625
              Ending cash199000319450464072.5635891.125838262.18125

              With 2-decimal formatting, FY2031 EBITDA should display as $202,371.06, and ending cash should display as $838,262.18.

              Next, change Assumptions!B2 to Optimistic. The expected FY2027 results are:

              MetricExpected FY2027 result
              Revenue575000
              COGS212750
              Gross profit362250
              Operating expenses235400
              EBITDA126850
              Net cash change126850
              Ending cash226850

              Then change B2 to Conservative. The expected FY2027 results are:

              MetricExpected FY2027 result
              Revenue515000
              COGS231750
              Gross profit283250
              Operating expenses228800
              EBITDA54450
              Net cash change54450
              Ending cash154450

              Only the selected rates and their dependent projection cells should change. The original scenario-table inputs should remain fixed.

                8

                Add reconciliation checks and test the model

                Add formula-based checks so broken identities are visible in the workbook.

                Enter this revenue check in Projection!B11 and copy it through F11:

                =IF(AND(ISNUMBER(B3),ISNUMBER(B4),ISNUMBER(B5)),IF(ROUND(B3-B4-B5,2)=0,"OK","CHECK"),"CHECK")
                

                Enter this EBITDA check in Projection!B12 and copy it through F12:

                =IF(AND(ISNUMBER(B5),ISNUMBER(B6),ISNUMBER(B7)),IF(ROUND(B7-(B5-B6),2)=0,"OK","CHECK"),"CHECK")
                

                For FY2027, enter the cash check in Projection!B13:

                =IF(AND(ISNUMBER(Assumptions!$B$6),ISNUMBER(B8),ISNUMBER(B9)),IF(ROUND(B9-(Assumptions!$B$6+B8),2)=0,"OK","CHECK"),"CHECK")
                

                Enter this formula in Projection!C13 and copy it through F13:

                =IF(AND(ISNUMBER(B9),ISNUMBER(C8),ISNUMBER(C9)),IF(ROUND(C9-(B9+C8),2)=0,"OK","CHECK"),"CHECK")
                

                These checks test the following identities to the nearest cent:

                Revenue = COGS + Gross profit
                EBITDA = Gross profit - Operating expenses
                Ending cash = prior cash + Net cash change
                

                For FY2027, prior cash is Assumptions!B6. From FY2028 onward, it’s the preceding year’s ending cash. With the supplied Base, Optimistic, or Conservative assumptions, every cell in Projection!B11:F13 should display OK.

                The downloadable Excel workbook was recalculated in LibreOffice 26.8 across 28 scenario, invalid-input, and boundary cases. Base, Optimistic, and Conservative produced the stated totals, with all 15 checks showing OK. Invalid assumptions produced visible #N/A errors and CHECK controls. These tests did not include a Google Sheets import. After importing or customizing, rerun the controls below in your spreadsheet application; a successful desktop recalculation does not establish that an imported copy behaves identically:

                CheckActionExpected result
                Base caseSelect exact BaseEvery projection value matches the five-year Base table; B11:F13 displays OK
                Scenario caseSelect Optimistic, then ConservativeFY2027 values match the scenario tables; B11:F13 remains OK
                Case sensitivityIn an unvalidated copy, enter baseAssumptions!B8:B10 shows #N/A; projections show #N/A; checks show CHECK
                No matchIn an unvalidated copy, enter Upside or clear B2Selected rates and projections show #N/A, not zero
                Duplicate keyReplace another scenario name with a second exact Base in A14:A16B8:B10 shows #N/A because there are 2 exact matches
                Zero inputsSet opening revenue and OpEx to numeric 0, leaving cash at 100000Revenue through net cash change remain zero; ending cash remains 100000; checks show OK
                Blank opening revenueClear B4Revenue and dependent formulas show #N/A
                Text opening revenueEnter five hundred thousand in an unvalidated copyRevenue and dependent formulas show #N/A
                Other opening inputsRepeat the blank and text tests for B5 and B6Their dependent formulas show #N/A
                Blank selected rateClear B14, C14, or D14 in separate Base-case copiesThe corresponding selected rate in B8, B9, or B10 shows #N/A; dependent formulas don’t calculate with 0%
                Text selected rateEnter text in B14, C14, or D14 in separate unvalidated copiesThe corresponding selected rate and dependent formulas show #N/A
                Revenue-growth guardIn an unvalidated copy, set selected revenue growth to 150%B8 and revenue-dependent formulas show #N/A
                OpEx-growth guardIn an unvalidated copy, set selected OpEx growth to -120%B9 and operating-expense-dependent formulas show #N/A
                Gross-margin guardIn separate unvalidated copies, set selected gross margin to 105% and -5%B10, COGS, and dependent formulas show #N/A
                Revenue-growth boundarySet selected revenue growth to -100%, then 100%-100% makes the next forecast revenue zero; 100% doubles it
                Gross-margin boundarySet selected gross margin to 0%, then 100%At 0%, COGS equals revenue; at 100%, COGS equals zero
                Date boundaryInspect B1:F1Cells contain December 31 dates for 2027-2031 with no skipped or duplicate year
                Opening-entry controlInspect Assumptions!B4:B6There is exactly one opening revenue, OpEx, and cash input
                Arithmetic reconciliationInspect Projection!B11:F13All 15 check cells display OK when the 3 identities hold

                These controls test arithmetic consistency. They don’t establish that the assumptions are commercially reasonable or that the simplified cash treatment is suitable for a real planning decision.

                If you add more opening entries while customizing the workbook, reconcile them manually first. The formulas don’t detect or exclude duplicate opening balances automatically.

                Google Sheets locales that use semicolons as formula separators may require replacing each comma in the formulas with a semicolon. Check Google’s locale and calculation settings and function reference when adapting the formulas.

                  9

                  Customize the projection without breaking its controls

                  Replace the illustrative inputs only after the Base case matches the expected results and every reconciliation cell displays OK.

                  For a specific business or finance use case:

                  • Document whether every amount is USD, another currency, units, or a percentage.
                  • State whether periods are calendar or fiscal years.
                  • Replace generic growth rates with business-specific drivers only after defining their units.
                  • Keep scenario inputs separate from projection formulas.
                  • Preserve the 3 reconciliation checks.
                  • Extend net cash change only when you’re ready to model the excluded cash-flow components explicitly.
                  • Retest Base, Optimistic, and Conservative after changing the structure.

                  If you start from an existing template, map its cells to the same input, calculation, and control categories before relying on its outputs.

                    10

                    Use ModelMonkey to inspect and present the projection

                    ModelMonkey is an AI assistant for Google Sheets and Excel. In Google Sheets, it can use the active spreadsheet, sheet, and selected-range context to read ranges, inspect formula errors, organize content, assist with formulas, analyze outputs, and create or adjust charts.

                    For this workbook, select Projection!B3:F13 and ask ModelMonkey:

                    Inspect this five-year projection for formula errors. Check whether the Revenue, EBITDA, and Cash control rows agree with their underlying formulas in every year. List any discrepancies without changing cells.
                    

                    Review its findings against the expected results in this guide. AI assistance doesn’t replace checking the workbook’s formulas or business assumptions.

                    To present the forecast, create a line chart using:

                    • X-axis: Projection!B1:F1
                    • Revenue series: Projection!B3:F3
                    • EBITDA series: Projection!B7:F7
                    • Ending-cash series: Projection!B9:F9

                    You can ask ModelMonkey to help create or adjust this chart. When its workflow presents proposed spreadsheet changes for review, inspect them before proceeding. For more guidance on checking AI-generated formulas, see Google Sheets AI Formula Tools for FP&A.

                      Wrapping Up

                      The completed workbook produces a five-year annual projection for FY2027 through FY2031, switches between 3 scenarios, returns visible errors for invalid selected rates, and includes formula-based revenue, EBITDA, and cash checks.

                      Confirm the supplied Base and scenario results before replacing the illustrative assumptions or expanding the simplified cash treatment.

                      Frequently Asked Questions

                      Can I download an Excel workbook for use in Google Sheets?

                      Yes. Download the editable .xlsx workbook for import into Google Sheets using File > Import > Upload. Google supports Excel imports; this workbook has been recalculated in LibreOffice, but its Google Sheets import has not been tested. It includes the exact two-tab example, scenario inputs, formulas, and reconciliation checks described here. Check the supplied Base totals after import. It is a simplified operating projection, not a full three-statement cash forecast.

                      How should I evaluate a five-year projection template I find online?

                      Check whether it separates inputs from formulas, uses real dates, states units, exposes scenario assumptions, and contains formula-based reconciliation controls. Don’t rely on a template until you can trace its outputs back to documented inputs.

                      Why does the template return #N/A instead of zero?

                      #N/A makes invalid, missing, duplicated, nonnumeric, or out-of-range assumptions visible. Returning zero could make an incomplete forecast appear valid.

                      What does CHECK mean in the reconciliation rows?

                      CHECK means an input isn’t numeric or an identity fails to reconcile to the nearest cent. Trace that column’s formulas and upstream assumptions before relying on its output.

                      Can I change the model to monthly periods?

                      Yes, but the formulas and opening-balance logic must be redesigned for 60 monthly columns. Don’t relabel the annual columns as months without changing growth-rate periodicity and cash calculations.

                      Is EBITDA normally the same as net cash change?

                      No. That equality is a deliberate simplification for this example. A fuller cash forecast may need taxes, working-capital movements, capital expenditure, financing, and other cash items.

                      Can I use fiscal years instead of calendar years?

                      Yes. Replace the dates in Projection!B1:F1 with the correct fiscal year-end dates and document the period covered by each column. Keep five consecutive, nonoverlapping 12-month periods.

                      What should I do if my formulas require semicolons?

                      Some Google Sheets locales use semicolons rather than commas between function arguments. Replace the commas used as argument separators with semicolons; don’t alter decimal or percentage values.