A seating plan has two halves: the data, a table name beside every guest, and the picture, a sketch of the room. Build the data first. The seven steps:
- Guest list, shared
- Tables and capacities
- Seat counts
- Conditional formatting
- Filter views
- Room sketch
- Google Form RSVPs
1. Set up the guest list and share it
One row per person, never one row per couple. Name the tab Guests:
| Column | What goes in it |
|---|---|
| A: Full name | One person per row |
| B: Party | Household or group |
| C: RSVP | Yes, No, or blank |
| D: Meal | Chicken, Fish, Veg |
| E: Allergies | Free text |
| F: Table | Table 1, Table 2 |
Share it with your partner as an Editor, and leave questions as comments (Ctrl+Alt+M) with an @mention instead of typing over each other. Sheets has no seating chart template of its own, so build these tabs or start from our free guest list template. Before a big reshuffle, open File > Version history and name the current version: the undo that survives a bad afternoon.
2. List your tables and their seat counts
On a second tab named Tables, put each table name in column A and its capacity in column B: 8 for a 60-inch round, 10 for a 72-inch round, 8 for an 8-foot banquet table. Our seats per table guide has the full set of capacities. Type the table names identically in both tabs, because the formulas match on that text.
3. Count the seats with COUNTIF and COUNTA
In C2 of the Tables tab enter =COUNTIF(Guests!$F$2:$F$300,A2) for seats used and =B2-C2 for seats free. If you type names into a visual grid instead, =COUNTA(B4:B13) counts a table column.
| Formula | What it tells you |
|---|---|
| =COUNTIF(Guests!$F$2:$F$300,A2) | Seats used at the table named in A2 |
| =B2-C2 | Seats still free there |
| =COUNTIF(Guests!$C$2:$C$300,"Yes") | Confirmed guests so far |
| =COUNTIFS(Guests!$C$2:$C$300,"Yes",Guests!$F$2:$F$300,"") | Confirmed guests with no seat |
4. Flag problems with conditional formatting
Select C2:C20 on the Tables tab, then Format > Conditional formatting. Under Format rules
choose Custom formula is and enter =$C2>$B2 with a red fill, so
any over-full table turns red as you type. On the guest list, apply =$F2="" to
A2:F300 in amber to light up every unseated guest.
5. Use filter views so you do not disturb each other
Data > Create a filter is shared: filter to the guests who have not replied and your partner's screen filters too, mid-sentence. Data > Filter views > Create new filter view is private to you and keeps its own web address. Make one for awaiting replies, one for missing meals, one for unseated guests.
6. Sketch the room with Insert > Drawing
Insert > Drawing gives you circles for round tables, rectangles for banquet tables, and text boxes for names. Select several shapes and use the Actions menu to align and distribute them evenly. Hold Shift while dragging a circle to keep it round. Save and Close drops the drawing onto the sheet as an image you can double-click to edit later. It is only a picture: nothing connects the shapes to the rows, so it will not follow a change in the Table column.
7. Collect replies with a Google Form
Build a form asking for name, attending, meal, and dietary notes, then link it to a response tab from the Responses panel and pull answers back with XLOOKUP against your guest names. The lookup reads
=XLOOKUP(A2,'Form Responses 1'!$B:$B,'Form Responses 1'!$C:$C,"No reply yet"), and
it matches only when the guest typed their name the way you did. That is the weak point.
What a Google Form will not do:
- Give each guest their own link, so nothing proves who replied.
- Catch a typo, or a couple replying twice.
- Move anyone into a seat, or free the seat of a guest who declines.
- Chase the people who have not answered.
- Show a guest their table, since sharing the sheet exposes everyone's details.
Your sheet travels with you
File > Download > Comma Separated Values or Microsoft Excel. The free Seatful builder reads either, maps your columns, and flags likely duplicates before anything is added.
Where this approach gets hard
Sheets is genuinely good at a shared list. It is the replies that wear people down.
- Replies land beside the plan, not in it. Form answers sit in their own tab, and you re-key them or babysit lookups.
- A decline does not free a seat. You clear the cell, decide who moves up, then redo the drawing.
- Meal counts are as fresh as the last time you looked. Nothing says they moved.
- The caterer report is a document you build. Counts, allergies, and tables are separate formulas.
- Guests get nothing. There is no safe way to let them look up their own seat.
The same plan, with the data wired in
Seatful will not give you two cursors in one document the way Sheets does. It removes most of the reason you wanted them. Import that same list, lay out round, banquet, and head tables, then tap a guest and tap a seat, or auto-fill everyone at once with households kept together. Each guest gets a private RSVP link showing only their own name, and replies land in the chart, so a decline frees the seat and meal counts move with it. Print the chart, a find-your-seat list, and a caterer report from the same file. Build it free in your browser.
Prefer a different tool?
- Excel, for pivot tables and offline work.
- Canva, for a beautiful entrance sign.
- The full method, guest list to door.
- A free guest list template.