Sentiment analysis in a spreadsheet, and when to skip it
Before the how: most people who ask for sentiment analysis do not want sentiment. They want to know which customers are about to leave, which reviews name a real defect, or which survey answers need a reply. Positive-or-negative is a lossy summary of all three, and it is worth a minute to check whether you can just ask the real question instead.
Why the score disappoints
Sentiment flattens a message to one axis. Consider four rows from a support inbox:
| Message | Sentiment | What you needed to know |
|---|---|---|
| “Please cancel our account at renewal. Thanks for everything.” | Positive | You are losing the account. |
| “This stupid button is in the wrong place, fix it!” | Very negative | Minor. They are staying. |
| “Works fine now, thanks.” | Positive | Nothing. Close it. |
| “Third time this week the export failed.” | Negative | A real, repeating defect. |
Sorting by sentiment puts the angry button comment at the top and the cancellation near the bottom. That is the wrong order for every decision you were going to make. If you find yourself planning to score sentiment and then read the negative ones, you can skip a step and ask directly for the thing you were going to look for.
Sentiment does earn its place in a few jobs: tracking a single number over time across thousands of reviews, comparing two product lines on the same scale, or when you genuinely have no more specific question yet. If that is you, here is how.
Method 1: a word list, with no AI
Keep two ranges of positive and negative words and net them off:
=SUMPRODUCT(--ISNUMBER(SEARCH($E$2:$E$40, LOWER(A2)))) - SUMPRODUCT(--ISNUMBER(SEARCH($F$2:$F$40, LOWER(A2))))
Free, instant, no quota, and completely transparent. It is also wrong in ways you cannot patch: “not great” scores positive, “sick” and “killer” flip meaning by domain, and “Great, another outage” scores positive twice over. Fine for a rough trend line on thousands of reviews where errors average out. Not fine for deciding which customer to call.
Method 2: the built-in AI function (Sheets)
Google Sheets has =AI(), which reads the text properly and handles negation and context far better than a word list:
=AI("Rate the sentiment of this review from 1 to 5.", A2)
Per Google's documentation it needs an eligible Google Workspace or Google AI plan, its responses are limited to text, and when you select a range and generate, only the first 350 selected cells with AI functions are generated, with further short- and long-term generation limits. So it is a good fit for a sample of a few dozen rows, and an awkward one for the whole export. (Checked September 2026; read Google's page rather than this one.)
Method 3: Excel, where the formula went away
Excel had COPILOT(), which did this in a cell. Microsoft retired it on 14 September 2026 in favour of the Copilot pane, which is chat and cannot be filled down a column. There is now no first-party Excel formula for sentiment; the options are an add-in or your own code. What replaced COPILOT() covers that in full.
Method 4: ask the specific question, get a number
This is our add-in, so weigh the framing accordingly. The formula takes any question in plain English and answers it for every row with a probability:
=LIKELY(A2:A5000, "Is this customer asking to cancel or leave?") → 0.96, 0.02, 0.04, 0.11 …
The cancellation from the table above comes back near 0.96 despite being polite, and the angry button comment near 0.02 despite being angry, because the question asked about leaving rather than about tone. If you do want sentiment on a scale, =LIKELY_SCORE(A2:A5000, "How positive is this review?", "1, 2, 3, 4, 5") gives you that too.
Being a number rather than a word is the useful part: sort by it, set your own threshold, and look at the rows between roughly 0.35 and 0.65, which is where the model is genuinely unsure. 5,000 rows take about a second.
What no method does well
Worth saying plainly, because tools in this category oversell it:
- Sarcasm is unreliable everywhere. Language models beat word lists and still miss dry or culturally specific cases.
- Mixed messages — praise for support, fury at billing — cannot honestly be one number. Ask two questions and get two columns.
- Domain vocabulary shifts meaning. “The model is aggressive” is a compliment in some rooms.
- A confident score is not a correct score. Whatever you use, hand-check a sample of fifty rows before anyone makes a decision on the column. This is the step everybody skips.
Try it on your own text
The demo on the front page runs on text you paste, no signup, no card — enough to see whether asking the specific question beats scoring the tone on your data. A free key is 2,000 rows a month.
Get a free key Classifying text in Sheets
Written 22 September 2026. Third-party limits and plan requirements change; the linked pages are the authority.