Proper Spreadsheets

Templates › Personal

Fitness & Weight Log

Made for people training with a goal.

Record every workout and a weekly weigh in. The summary shows workouts per week, total training time and how your weight has moved. The summary carries a chart that redraws itself as you type.

Of the 13 columns, you fill in 10 and the other 3 work themselves out, and all 12 figures on the summary do too. There is room for 460 rows of your own.

£4.99one payment, yours to keep

  • Opens in Excel, Google Sheets and Numbers
  • Delivered straight away
  • No macros, nothing to install
  • Change it free before you buy

Payment is handled by Stripe. Your card details go to them and never to us. Sales are final, which is why every tab, column and calculation is shown on this page first.

Already have a spreadsheet of your own? Check it for mistakes, free.

The workbook's summary and the table behind it
A row typed into the real file. Every figure that changes is the spreadsheet's own arithmetic. What the film shows, in order:
  1. A new row is typed into the Workouts tab, one cell at a time, in the white cells a person fills in.
  2. The shaded cells in that row fill themselves in.
  3. The figures on the Summary tab change to include the new row.
  4. The chart, Training minutes by workout type, redraws with it.
The chart, drawn from the totals in the table beside it. See it full size
Where you type, and the shaded columns that work themselves out. See it full size

Everything inside, before you pay

This is the whole design: every tab, every column and how each calculated one is worked out. White cells are yours to fill in; the shaded ones work themselves out and are locked so a formula cannot be overwritten by accident. There is room for 460 rows. Open any tab to see its columns.

Workouts

7 columns

One row per workout. Effort is how hard it felt on a scale of 1 to 10. Ready for 400 rows, every one with its formulas in place.

ColumnWhat goes in itWorked out as
DateType a date.
TypePick one: Run, Cycle, Swim, Strength, HIIT, Yoga, Walk or Other.
Duration (min)Type a number.
Effort (1 to 10)1 is very easy, 10 is flat out.Type a number.
Week StartingThe Monday of the week this workout falls in.Fills itself in.

Worked out from this row's Date.

The formulaIF(ISBLANK([date]), "", [date]-WEEKDAY([date],2)+1)
HoursFills itself in.

The Duration (min) divided by 60.

The formulaIF(ISBLANK([minutes]), "", ROUND([minutes]/60, 2))
NotesType any text.

Body Log

6 columns

One row per weekly weigh in. Enter the oldest first so the change column counts from your starting point. Ready for 60 rows, every one with its formulas in place.

ColumnWhat goes in itWorked out as
DateType a date.
Weight (kg)Type a number.
Waist (cm)Type a number.
Chest (cm)Type a number.
Hips (cm)Type a number.
Change Since Start (kg)Compared with your earliest weigh in.Fills itself in.

Worked out from this row's Weight (kg), using Weight (kg) and Date on Body Log.

The formulaIF(ISBLANK([weight]), "", IFERROR(ROUND([weight]-INDEX([Body Log!weight], MATCH(MIN([Body Log!date]), [Body Log!date], 0)), 1), 0))

Summary

12 figures

Your progress at a glance. Everything updates as you add rows.

FigureWorked out as
Workouts this week

Worked out from Date on Workouts.

The formulaCOUNTIFS([Workouts!date], ">="&(TODAY()-WEEKDAY(TODAY(),2)+1), [Workouts!date], "<="&TODAY())
Workouts last week

Worked out from Date on Workouts.

The formulaCOUNTIFS([Workouts!date], ">="&(TODAY()-WEEKDAY(TODAY(),2)-6), [Workouts!date], "<"&(TODAY()-WEEKDAY(TODAY(),2)+1))
Average workouts per week (last 4 weeks)

Worked out from Date on Workouts.

The formulaROUND(COUNTIFS([Workouts!date], ">"&(TODAY()-28), [Workouts!date], "<="&TODAY())/4, 1)
Total workouts

The number of rows on Workouts with Date filled in.

The formulaCOUNT([Workouts!date])
Total training time (hours)

Worked out from Duration (min) on Workouts.

The formulaROUND(SUM([Workouts!minutes])/60, 1)
Training time this week (minutes)

Worked out from Duration (min) and Date on Workouts.

The formulaSUMIFS([Workouts!minutes], [Workouts!date], ">="&(TODAY()-WEEKDAY(TODAY(),2)+1), [Workouts!date], "<="&TODAY())
Average effort

The average of Effort (1 to 10) on Workouts.

The formulaIFERROR(ROUND(AVERAGE([Workouts!effort]), 1), 0)
Starting weight (kg)

Worked out from Weight (kg) and Date on Body Log.

The formulaIFERROR(INDEX([Body Log!weight], MATCH(MIN([Body Log!date]), [Body Log!date], 0)), 0)
Latest weight (kg)

Worked out from Weight (kg) and Date on Body Log.

The formulaIFERROR(INDEX([Body Log!weight], MATCH(MAX([Body Log!date]), [Body Log!date], 0)), 0)
Weight change since start (kg)A negative number means you have lost weight.

Worked out from Weight (kg) and Date on Body Log.

The formulaIFERROR(ROUND(INDEX([Body Log!weight], MATCH(MAX([Body Log!date]), [Body Log!date], 0))-INDEX([Body Log!weight], MATCH(MIN([Body Log!date]), [Body Log!date], 0)), 1), 0)
Lowest weight (kg)

The smallest Weight (kg) on Body Log.

The formulaMIN([Body Log!weight])
Latest waist (cm)

Worked out from Waist (cm) and Date on Body Log.

The formulaIFERROR(INDEX([Body Log!waist], MATCH(MAX([Body Log!date]), [Body Log!date], 0)), 0)