Proper Spreadsheets

Templates › Clubs

Choir & Band Repertoire

Made for musical directors and band leaders.

Keeps the choir's repertoire, how well each piece is known, and which pieces were sung at each performance. The summary carries a chart that redraws itself as you type.

Of the 19 columns, you fill in 13 and the other 6 work themselves out, and all 10 figures on the summary do too. There is room for 860 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 Repertoire 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, Minutes of music by how well we know it, 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 860 rows. Open any tab to see its columns.

Repertoire

7 columns

One row per piece the choir sings or is learning. Ready for 200 rows, every one with its formulas in place.

ColumnWhat goes in itWorked out as
TitleKeep each title unique so it can be picked on the Setlists tab.Type any text.
ComposerType any text.
ArrangementArranger or edition, or Original.Type any text.
Length (mins)Type a number.
How Well We Know ItPick one: Not started, Learning, Nearly there, Performance ready or Needs a refresh.
Voice PartsPick one: SATB, SSAATTBB, SAB, SSA, SA, TTBB or Unison.
Times PerformedFills itself in.

The number of rows on Setlists where Piece matches this row's Title.

The formulaIF(ISBLANK([title]), "", COUNTIF([Setlists!piece], [title]))

Performances

6 columns

One row per concert, service or event. Ready for 60 rows, every one with its formulas in place.

ColumnWhat goes in itWorked out as
PerformanceGive each performance a unique name so it can be picked on the Setlists tab.Type any text.
DateType a date.
VenueType any text.
TypePick one: Concert, Service, Wedding, Competition, Community event or Other.
Pieces SungFills itself in.

The number of rows on Setlists where Performance matches this row's Performance.

The formulaIF(ISBLANK([name]), "", COUNTIF([Setlists!performance], [name]))
Music (mins)Fills itself in.

The total of Length (mins) on Setlists where Performance matches this row's Performance.

The formulaIF(ISBLANK([name]), "", SUMIF([Setlists!performance], [name], [Setlists!duration]))

Setlists

6 columns

One row per piece sung at a performance. Pick the performance and the piece; the rest fills itself in. Ready for 600 rows, every one with its formulas in place.

ColumnWhat goes in itWorked out as
PerformancePick one of the Performance entries on Performances.
OrderPosition in the programme: 1 for the opening piece.Type a number.
PiecePick one of the Title entries on Repertoire.
DateFills itself in.

Worked out from this row's Performance, using Date and Performance on Performances.

The formulaIF(ISBLANK([performance]), "", IFERROR(INDEX([Performances!date], MATCH([performance], [Performances!name], 0)), ""))
ComposerFills itself in.

Worked out from this row's Piece, using Composer and Title on Repertoire.

The formulaIF(ISBLANK([piece]), "", IFERROR(INDEX([Repertoire!composer], MATCH([piece], [Repertoire!title], 0)), ""))
Length (mins)Fills itself in.

Worked out from this row's Piece, using Length (mins) and Title on Repertoire.

The formulaIF(ISBLANK([piece]), "", IFERROR(INDEX([Repertoire!duration], MATCH([piece], [Repertoire!title], 0)), ""))

Summary

10 figures

The state of the repertoire and the performance calendar at a glance.

FigureWorked out as
Pieces in the repertoire

The number of rows on Repertoire with Title filled in.

The formulaCOUNTA([Repertoire!title])
Performance ready

The number of rows on Repertoire where How Well We Know It is “Performance ready”.

The formulaCOUNTIF([Repertoire!readiness], "Performance ready")
Still learning or nearly there

Worked out from How Well We Know It on Repertoire.

The formulaCOUNTIF([Repertoire!readiness], "Learning") + COUNTIF([Repertoire!readiness], "Nearly there")
Needing a refresh

The number of rows on Repertoire where How Well We Know It is “Needs a refresh”.

The formulaCOUNTIF([Repertoire!readiness], "Needs a refresh")
Total repertoire length (mins)

The total of Length (mins) on Repertoire.

The formulaSUM([Repertoire!duration])
Minutes ready to perform

The total of Length (mins) on Repertoire where How Well We Know It is “Performance ready”.

The formulaSUMIF([Repertoire!readiness], "Performance ready", [Repertoire!duration])
Average piece length (mins)

The average of Length (mins) on Repertoire.

The formulaIFERROR(ROUND(AVERAGE([Repertoire!duration]), 1), 0)
Pieces never performed

The number of rows on Repertoire where Times Performed is 0.

The formulaCOUNTIF([Repertoire!times_performed], 0)
Performances this year

Worked out from Date on Performances.

The formulaCOUNTIFS([Performances!date], ">=" & DATE(YEAR(TODAY()), 1, 1), [Performances!date], "<=" & TODAY())
Upcoming performances

Worked out from Date on Performances.

The formulaCOUNTIF([Performances!date], ">" & TODAY())