Predict cycles from a cell. Returns period, ovulation and fertile-window dates — Google Sheets or Excel.
It's one of 250+ live sources you reach with a single =VERVE() function — served from APIVerve's production data engine, billed at 1 credit per resolved cell, and refreshed on whatever cadence you set. No API keys to wrangle, no scripts, no exports.
A real example — the input you type, and the values you can pull from it. Click any cell to see the formula behind it.
Fill =VERVE("menstrualcycle", "2024-01-01", "field", "last_period_date") down a column and Menstrual Cycle Calculator returns a result for every row — a batch of live values in a single drag, no code.
Add Menstrual Cycle Calculator beside a table you already have to append its output right where your data lives, then sort, filter, or chart on it.
Set the sheet to refresh on a schedule and the menstrual cycle calculator values keep themselves current without anyone re-typing.
The same function works in both apps — install once, sign in with your key, and type it into any cell.
Install from the Workspace Marketplace, then drop the formula into a cell. Autocomplete suggests the source and its fields.
=VERVE("menstrualcycle", "2024-01-01", "field", "last_period_date")Same source, same arguments, same key — in Excel on desktop, the web, or mobile. Excel namespaces it as VERVE.CALL. Drag to fill a whole column.
=VERVE.CALL("menstrualcycle", "2024-01-01", "field", "last_period_date")Tune the result by adding name=value before the field argument — in any order. Leave one out and its default applies.
Average cycle length in days
=VERVE("menstrualcycle", "2024-01-01", "cycle_length", "28")Average period duration in days
=VERVE("menstrualcycle", "2024-01-01", "period_length", "5")Number of future cycles to calculate
=VERVE("menstrualcycle", "2024-01-01", "cycles", "3")Add a field name as the last argument to land just that value in the cell.
=VERVE("menstrualcycle", "2024-01-01", "field", "last_period_date")=VERVE("menstrualcycle", "2024-01-01", "field", "cycles_calculated")=VERVE("menstrualcycle", "2024-01-01", "field", "cycles.0.cycle_number")=VERVE("menstrualcycle", "2024-01-01", "field", "cycles.0.period.start_date")=VERVE("menstrualcycle", "2024-01-01", "field", "cycles.0.period.end_date")=VERVE("menstrualcycle", "2024-01-01", "field", "cycles.0.period.duration_days")=VERVE("menstrualcycle", "2024-01-01", "field", "cycles.0.ovulation.date")=VERVE("menstrualcycle", "2024-01-01", "field", "cycles.0.ovulation.day_of_cycle")=VERVE("menstrualcycle", "2024-01-01", "field", "cycles.0.fertile_window.start_date")=VERVE("menstrualcycle", "2024-01-01", "field", "cycles.0.fertile_window.end_date")=VERVE("menstrualcycle", "2024-01-01", "field", "cycles.0.fertile_window.duration_days")=VERVE("menstrualcycle", "2024-01-01", "field", "cycles.0.pms_phase.start_date")Premium marks data included on paid plans. On the Free plan a marked field is withheld and a marked input is ignored — either way the cell reads #PREMIUM(name) instead of a value, so a gated answer can never be mistaken for a real one. Everything unmarked works on every plan. Compare plans
Everything you need to wire it into a sheet.