# 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.

Updated 28 September 2026. Source: https://hunchsheet.app/formulas/sentiment-analysis-excel

## 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.

| Review | Position (0–4) | Complaint? (0–1) |
| --- | --- | --- |
| The mobile app keeps logging me out mid-entry. Lost an hour of receipts twice this week. | 0.36 | 0.95 |
| Setup was quick and the dashboard is exactly what our finance team needed. No complaints. | 3.06 | 0.04 |
| Fine for basic tracking. Reporting is clunky and export to CSV takes forever. | 1.50 | 0.66 |
| Charged me for two seats when I only added one user. Please fix and refund the difference. | 0.42 | 0.96 |
| This replaced three spreadsheets overnight. Wish I had switched sooner. | 3.36 | 0.13 |
| Support answered fast but the fix broke a different report. Back to square one. | 0.92 | 0.89 |
| Does the job. Nothing exciting, nothing broken. | 2.00 | 0.11 |
| 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")
```

> Tip: 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

1. Sideload the add-in from [hunchsheet.app/excel](https://hunchsheet.app/excel). The AppSource listing is pending; the sideloaded file is the same add-in.
2. Save your key once: `=HUNCH.SETKEY("hunch_...")`, press Enter, then delete the cell.
3. 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](https://hunchsheet.app/docs/hunchscore) for every argument and return shape, including `"label"` and `"index"`.
- [The same pattern in Google Sheets](https://hunchsheet.app/formulas/sentiment-analysis-google-sheets).
- [AI formulas in Excel](https://hunchsheet.app/formulas/ai-formulas-excel): when to reach for SCORE instead of ASK, PICK or MULTI.

## Questions

### Can I use my own scale instead of angry to delighted?

Yes. Any two to ten levels, ordered low to high, separated by a pipe. Add a description after a colon when a level needs one, such as "neutral: no clear feeling either way".

### What about reviews in languages other than English?

The model works best in English. Other languages return answers, but accuracy is lower; run 20 or 30 rows first and check them by eye.

### How much does scoring 500 reviews cost?

Running both formulas is two credits per row, so 1,000 credits for 500 reviews, about $5.80 on the Starter pack. Blank cells and exact duplicate texts inside one column are free.

### Do I need HUNCH.ASK if I already have the sentiment score?

Not always. A low score already implies a negative review. HUNCH.ASK earns its column when "needs a reply" is a different bar than "negative", such as flagging refund requests specifically rather than every disappointed row.

### Will the numbers change if I reopen the workbook next week?

No, as long as the text has not changed and it has been under six hours. Once a column is final, select it, copy, and Paste Values so it never recalculates again.

