How to Make a Tally Counter in Google Sheets: 3 Methods

Jake Lim
Published by
Jake Lim@jakelim_fps
How to Make a Tally Counter in Google Sheets - My Click Speed
Share

Google Sheets can function as a tally counter using either a no-code checkbox method or a clickable Apps Script button. This guide covers three approaches in order of complexity: the checkbox + COUNTIF formula (no code), a single-category button script, and a multi-category tracker with reset.

If you need a quick tally counter without building one, use our free online tally counter - it works instantly in your browser with no setup required.

Method 1: Checkbox + COUNTIF (No Code Required)

This is the simplest approach. Each checkbox represents one tally mark, and a COUNTIF formula counts how many are checked.

Steps:

  1. Open a Google Sheet and click on cell B2.
  2. Go to Insert > Checkbox. A checkbox appears in B2.
  3. Click the cell handle in the bottom-right corner of B2 and drag down to B101 (or however many rows you need). This fills the range with checkboxes.
  4. Click cell D2 and enter this formula:
=COUNTIF(B2:B100, TRUE)

The formula counts every checked box in the range and displays the total in D2. Click a checkbox to check it and the count updates instantly. Uncheck it to subtract from the total.

To reset: Select the entire checkbox range (B2:B100), press Delete, and all boxes uncheck simultaneously.

This method works on mobile (Android and iPhone) because checkboxes are native Google Sheets elements that function in the mobile app.

Method 2: Apps Script Clickable Button

This method creates a proper button you click to increment a counter stored in a single cell. It gives you a cleaner interface than checkboxes.

Step 1 - Add the script:

  1. Click Extensions > Apps Script in the menu bar.
  2. Delete any existing code in the editor and paste the following:
function increment() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const cell = sheet.getRange('B1'); cell.setValue(cell.getValue() + 1); } function decrement() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const cell = sheet.getRange('B1'); const val = cell.getValue(); if (val > 0) cell.setValue(val - 1); } function reset() { SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('B1').setValue(0); }

Click the save icon (or Ctrl+S / Cmd+S) and close the Apps Script tab.

Step 2 - Create the button:

  1. In your sheet, go to Insert > Drawing.
  2. Draw a rounded rectangle and add the text "+1" inside it.
  3. Click Save and Close. The drawing appears on the sheet as a floating element.
  4. Click the three-dot menu on the drawing and select Assign script.
  5. Type increment and click OK.

Repeat the drawing process to create "-1" and "Reset" buttons assigned to the decrement and reset functions. Your counter value lives in cell B1.

The first time you run a script, Google Sheets asks for permission to access your spreadsheet. Click Review Permissions, choose your Google account, and click Allow. This only happens once per script project.

Mobile limitation: Apps Script drawing-buttons do not work in the Google Sheets mobile app on Android or iPhone. If you need a tally counter on mobile, use Method 1 (checkboxes) or the online tally counter instead.

Method 3: Multi-Category Tally Counter

This tracks separate counts for multiple categories simultaneously - useful for survey tallying, sports scoring, event counting, or any scenario with multiple items to track.

Set up your sheet with category labels in A1, A2, A3 and counter values in B1, B2, B3. Then add this script via Extensions > Apps Script:

function addA() { add('B1'); } function addB() { add('B2'); } function addC() { add('B3'); } function add(cell) { const s = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const r = s.getRange(cell); r.setValue(r.getValue() + 1); } function resetAll() { const s = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); ['B1', 'B2', 'B3'].forEach(c => s.getRange(c).setValue(0)); }

Create drawing buttons and assign addA, addB, addC, and resetAll to each one following the same process as Method 2. To add more categories, duplicate any addX function and point it to a new cell reference.

Google Sheets vs a Dedicated Tally Counter

Google Sheets works well when you already have a spreadsheet open and need to add a counter alongside other data. It is the right choice when your tally needs to integrate with formulas, charts, or other spreadsheet functions.

For standalone counting tasks - tracking attendance, counting inventory items, keeping score in a game - a dedicated tally counter tool is faster to use and requires no setup. You open it and click. No formulas, no script permissions, no spreadsheet overhead.

If you need to make the same counter in Excel instead, see our guide on how to make a tally counter in Excel.

Share

No. Drawing buttons with assigned scripts do not function in the Google Sheets mobile app on Android or iPhone. They are desktop-only. For mobile counting, use the checkbox method (Method 1) or a browser-based tally counter tool.

Add a new row in your sheet (e.g. A4 label, B4 counter). Then add a new function to your script: function addD() { add('B4'); } Save the script and create a new drawing button assigned to addD.

Yes. Share the Google Sheet normally using the Share button. If you are using the Apps Script button method, other users will need to authorize the script on their first click, just like you did when setting it up.

Apps Script needs authorization to read and write data in your spreadsheet. The permission prompt only appears once per script project. After you allow it, the buttons work immediately every time without prompting again.

Yes. Change B2:B100 in the formula to whatever range contains your checkboxes. You can use a full column like B:B, but narrowing the range to your actual data (like B2:B50) makes the formula run faster.

Not with the basic methods in this guide. To log who clicked and when, you would need to modify the Apps Script to write a timestamp and user email to a separate log column each time the increment function runs.