Skip to main content

Building a Formula in Spreadsheet

Writing a GI.* formula, pointing at cells, and worked examples: plot ratio, efficiency, blended revenue, unit mix, residual land value, cashflow

Written by Holly Conrad Smith

A GI.* formula pulls a single live number from your Giraffe project into a cell, the same way SUM pulls a total from a range. Use it to pin a hard cost rate, a total gross area or a unit count into a pro forma without retyping it every time the model changes.

Write a Gi formula

Type =GI. into any cell. Autocomplete lists this project's own fields, not a generic function list, so you pick from what your project actually has.

A few common ones:

  • =GI.TOTAL("grossArea"): every section's gross area, added up.

  • =GI.TOTAL("grossArea", "usage=Residential"): the same total, filtered to one usage.

  • =GI.COUNT("levels>3"): how many geometries have more than 3 levels.

  • =GI.WEIGHTEDAVG("salePrice"): the area-weighted mean sale price. It is a mean, not a sum.

Spreadsheet ships with roughly 45 functions in total, the set a development pro forma, an area schedule and a unit mix actually need, rather than every function a full spreadsheet program has. Click Help in the toolbar for the full list, or see Function List in Spreadsheet.

Point at cells instead of typing addresses

Type = and then point at cells instead of typing their addresses, the same as in Excel:

  • Arrow keys pick a cell on the sheet instead of moving your text cursor, and Shift+arrow extends the pick to a range.

  • Clicking a cell inserts its reference. Dragging inserts a range.

  • Typing anything else ends the pick, and the reference stays as text.

Mid-formula, click a different sheet tab and then a cell there to reference across sheets, for example =Usages!C8. Pressing Enter brings the formula back to the cell where you started typing it.

Worked examples

These are the calculations a development pro forma almost always needs. Each one combines a GI.* function with ordinary spreadsheet functions.

Plot ratio (FAR)

Divide total gross area by the site area:

=GI.TOTAL("grossArea") / GI.SITEAREA()

Use GI.SITEAREA(), not GI.FOOTPRINT(). The footprint is the ground your geometries actually cover, so a plot ratio built on it instead of the site reads higher than the true number.

Net-to-gross efficiency

Divide net area by gross area, filtered to the usage you care about:

=GI.TOTAL("netArea", "usage=Residential") / GI.TOTAL("grossArea", "usage=Residential")

This is the same number Spreadsheet's efficiency field already carries as a weighted average, so =GI.WEIGHTEDAVG("efficiency", "usage=Residential") gets there in one step when the project already has that field.

Blended sale revenue

Multiplying a total area by an average sale price overstates or understates revenue on any scheme with mixed pricing. Work the arithmetic out per geometry instead:

=GI.SUMEACH("saleableArea * salePrice", "usage=Residential")

See Per-Geometry Calculations in Spreadsheet for why GI.SUMEACH gives a different, more accurate answer than a total times an average.

Unit mix percentages

The dwelling mix arrives as one field per bed type, such as dwelling-2BED-Count. Divide each bed type by the total to get its share:

=GI.TOTAL("dwelling-2BED-Count") / GI.TOTAL("dwellingTotalCount")

Format the result as a percentage from the toolbar's number format dropdown. Click Examples ▾ and choose Dwelling counts to stamp every bed type as its own column in one step, then add a percentage row underneath.

Residual land value

A residual appraisal is revenue, minus costs, minus a required profit margin, leaving what the land itself is worth:

  • Revenue: =GI.SUMEACH("saleableArea * salePrice"), by usage.

  • Hard and soft costs: =GI.SUMEACH("grossArea * hardCost"), and a soft cost percentage applied to that.

  • Profit: a percentage of revenue or of total cost, entered as an ordinary assumption cell.

  • Residual land value: revenue, minus costs, minus profit.

Click File ▾ → Residual appraisal for a full worked version of this schedule against your own project. See Example Workbooks in Spreadsheet.

Monthly cashflow: NPV and IRR

Lay a draw schedule down a column of monthly dates, with cash out (costs) and cash in (sales) beside each date, then read the return with NPV and IRR:

=NPV(discount_rate/12, cashflow_range) + initial_outlay

=IRR(cashflow_range)

Build the month column with EOMONTH so it advances by calendar month rather than a fixed number of days:

=EOMONTH(A2, 1)

Click File ▾ → Monthly cashflow for a full worked 24-month draw with NPV and IRR already built. See Column Types in Spreadsheet for continuing a date series with the fill handle, and Charts in Spreadsheet for turning this into a chart. For a full walkthrough, see Create a Pro Forma and Cashflow in Spreadsheet.

Did this answer your question?