Sentiment analysis in Excel with one formula
=HUNCH.SCORE reads a review or comment and returns its position on a sentiment scale you define, from angry to delighted, as a number you can sort. Add =HUNCH.ASK next to it to flag which rows are complaints that need a reply.
Why a five-level scale beats positive or negative
A thumbs-up-or-down split throws away the reviews that matter most. "Fast delivery, but support never replied" and "best purchase this year" both read as positive if the scale only has two settings. Five ordered levels keep the gap between them, and the formula returns a position between levels rather than only the nearest one, so a review that is mostly happy but not delighted can land at 2.9 instead of being rounded up.
The formula
=HUNCH.SCORE(A2:A9, "How does the reviewer feel about the product overall?", "angry|disappointed|neutral|happy|delighted")In Google Sheets: =HUNCHSCORE(A2:A9, "How does the reviewer feel about the product overall?", "angry|disappointed|neutral|happy|delighted")
The result is the weighted position across the five levels, from 0 (angry) to 4 (delighted). Add "label" as a fourth argument to get the closest level back as a word instead of a number, which reads better in a shared workbook: =HUNCH.SCORE(A2, "...", "angry|disappointed|neutral|happy|delighted", "label").
=HUNCH.ASK(A2:A9, "Is this review a complaint that needs a reply?")In Google Sheets: =HUNCH(A2:A9, "Is this review a complaint that needs a reply?")
Sentiment and "needs a reply" are different questions. A review can be mildly disappointed and still not need anyone to act on it, and a review can be short and blunt and need one today. Run both formulas and read the columns together.
Real outputs
Eight reviews for a small expense-tracking app, with the model's answers as returned on 28 September 2026. Column B is the sentiment position, column C the complaint probability.
| Row | A | B | C |
|---|---|---|---|
| 1 | Review | Position (0–4) | Complaint? (0–1) |
| 2 | The mobile app keeps logging me out mid-entry. Lost an hour of receipts twice this week. | 0.36 | 0.95 |
| 3 | Setup was quick and the dashboard is exactly what our finance team needed. No complaints. | 3.06 | 0.04 |
| 4 | Fine for basic tracking. Reporting is clunky and export to CSV takes forever. | 1.50 | 0.66 |
| 5 | Charged me for two seats when I only added one user. Please fix and refund the difference. | 0.42 | 0.96 |
| 6 | This replaced three spreadsheets overnight. Wish I had switched sooner. | 3.36 | 0.13 |
| 7 | Support answered fast but the fix broke a different report. Back to square one. | 0.92 | 0.89 |
| 8 | Does the job. Nothing exciting, nothing broken. | 2.00 | 0.11 |
| 9 | Cancelled after the trial. The receipt scanner misread half our invoices. | 0.79 | 0.78 |
Row 7, "does the job, nothing exciting, nothing broken," lands exactly at 2.00, dead center on the scale, which is what a genuinely neutral review should do. Row 6 is the interesting one: "support answered fast" reads positive for four words, but the complaint column still puts it at 0.89, because the model weighs the broken report over the compliment that opens the sentence. Row 3 sits at 1.5, between disappointed and neutral, with a complaint probability of 0.66 that is neither a clear yes nor a clear no. That is the row to open by hand: "clunky" and "takes forever" are real friction without being urgent, and 0.66 says exactly that.
Turn it into a queue
Select column B and apply Home > Conditional Formatting > Color Scales, red at the low end. A sheet of a thousand reviews becomes a heat map you can scan in seconds without reading a word.
=SORTBY(A2:C9, C2:C9, -1)SORTBY on the complaint column puts the rows someone should answer at the top, independent of how the sheet was originally ordered. Pair it with a count for the standup:
=COUNTIF(C2:C9, ">=0.6")Read the rows near 0.5 in either column yourself. That is the model saying the text is genuinely mixed, not a bug in the formula, and it is usually the review worth the closest look.
Limits
- English gets the most reliable results. Other languages work at lower accuracy, so test a sample before trusting the column.
- The model judges the text you give it, not star ratings or dates in nearby cells. Keep those in normal columns.
- Cells calculating together travel in requests of up to 40 rows, so a 2,000-row column runs as about 50 requests, not one.
- Answers are cached for six hours inside Excel. Reopening the workbook or pressing F9 does not spend credits again unless the text changed.
- Works in Excel for Windows (Microsoft 365), Mac (2016 or later) and the web. Not on mobile.
Setup in three steps
- Sideload the add-in from hunchsheet.app/excel. The AppSource listing is pending; the sideloaded file is the same add-in.
- Save your key once:
=HUNCH.SETKEY("hunch_..."), press Enter, then delete the cell. - Type
=HUNCH.SCORE(A2, "How does the reviewer feel about the product overall?", "angry|disappointed|neutral|happy|delighted")and fill it down.
See also
- HUNCH.SCORE reference for every argument and return shape, including
"label"and"index". - The same pattern in Google Sheets.
- AI formulas in Excel: when to reach for SCORE instead of ASK, PICK or MULTI.
Questions
Can I use my own scale instead of angry to delighted?
What about reviews in languages other than English?
How much does scoring 500 reviews cost?
Do I need HUNCH.ASK if I already have the sentiment score?
Will the numbers change if I reopen the workbook next week?
Run it on your own column
Install the Excel add-in (two minutes, Windows, Mac and the web), save your key with =HUNCH.SETKEY, and point the formula at your data. 100 rows free to start, then $29 for 5,000 rows. Credits never expire and there is no subscription.
Reference: HUNCH · HUNCHSCORE