Why ChatGPT Gives Different Answers From the Same Spreadsheet
You upload the same file and ask the same question, and the total moves. Usually nothing is broken. The model made a different decision about your data, and it did not tell you.
ChatGPT gives different answers from the same spreadsheet because the numbers are not the only thing it works out. Each run also decides what your words mean, which rows count, and how to read a messy file, and OpenAI's own documentation says its models are non-deterministic by default. So the arithmetic may be fine while the choices behind it change. The fix is to find which choice moved and pin it down, and you can do that in about ten minutes.
The four causes, most common first
1. An undefined word
"Revenue" could be gross or net. "Last quarter" could be calendar or fiscal. "Customers" could be everyone or only those who paid. Your file does not say, so the model picks an interpretation, and it can pick another next time. We wrote about this in general in why AI gives you a different number every time. In a spreadsheet, it often looks like a choice between two similar columns, such as Amount and Net Amount.
2. The shape of the file
Spreadsheets built for people often confuse code. These are the specific things to look for:
- A total row at the bottom. If it is treated as data, your sum doubles. If it is noticed in one run and not in another, the answers differ by exactly that factor.
- Title rows above the header. One run may take row 3 as the header and another may use row 1.
- Multiple tabs. One run reads the first tab, and another combines them.
- Mixed types. Dates written as text, or
$1,200next to1200, get dropped in one approach and converted in another. Dropped rows do not raise an error, and the total is just lower.
3. Different code on each run
When ChatGPT analyzes an uploaded file, it writes and runs code. The code is usually sensible, but it is written fresh each time. One run removes duplicates and another does not. One filters blank statuses out and another keeps them. Python executes each version correctly, so being correct arithmetic is no protection.
4. Pasted text instead of a file
Paste a table into the chat and the model may answer from reading it, without running anything. This is the one case where the arithmetic itself is at risk, especially on long columns. Upload the file, and ask to see the code.
A ten-minute test to find your cause
- Get the true answer yourself. Use a pivot table or
SUMIFS. Without this you only know the answers differ, not which is right. - Ask the identical question in three new chats, uploading the same file each time, and record the answers.
- Then ask each one: How many rows did you include and exclude? Which columns and filters did you use? Show the code you ran.
- Compare.
| What you see | Cause | Fix |
|---|---|---|
| Row counts differ | File shape | One flat table, one header row, no totals |
| Same rows, different column or filter | Undefined word | Write the definition in the prompt |
| Same method, different result | Pasted text or a code slip | Upload the file; check the code |
| Answers ratio is about 2.0 | A total row counted as data | Delete the total row |
A prompt that holds up better
Once the file is one clean table, state the decisions rather than leaving them open:
Use the tab "Orders". The header is row 1. There is no total row.
Net sales = subtotal minus discount_amount, for all orders including refunded ones.
Use order_date for time. Last quarter means July 1 to September 30, 2026.
The sum of subtotal across all rows should be 412,906.40.
Reconcile to that first. If it does not match, stop and tell me.
Then give net sales by month, and show the code.
The control total does the most work. It costs a single line, and it catches dropped rows, doubled totals and the wrong tab all at once, because the model has to account for a figure it did not produce. In my experience, this is the single best habit for working with AI on spreadsheets.
I would not want this to read as a complaint about someone else's product. We hit a version of it in our own. Testing a Word report on sample apparel data, the headline figure, chart and table said year-to-date net sales were $216,541.74, and the commentary a few lines below said $195,729.64. Same data and same document, with both parts generated by our software. One path counted every order, and the other counted only paid orders, and each was a defensible reading of "net sales". The sentence was fluent, and nothing about it looked wrong until you compared it with the table. That is what convinced me a definition has to be stored somewhere outside the prompt, and enforced there.
One report, generated during our own testing on a sample dataset, and checked by recomputing both totals from the source CSVs. It illustrates a failure mode and says nothing about how often it happens. We have since changed how that path reads a definition.
What this will not fix
A good prompt works for you, today, in this chat. It does not help when a colleague asks the same question next week in their own words, or when you open a new chat and paste a shorter version. Custom instructions help a little, but they live with one person. If the number will be repeated, the definition has to live somewhere everyone's question passes through.
Where Quiriz is different, and where it is not
In Quiriz, an admin writes metric definitions once in Company Context: the formula, the dataset and the filter. Every question then uses them, whether it comes from the web app, a cell in Excel, Sheets, Slack or a report. When you import a file, it is converted into a typed table, so headers and types are settled once rather than guessed at on each question. If you ask for a value that is not in the data, it says so rather than returning a tidy zero.
The honest part. This fixes definitions, not bad data. Duplicates in your export stay duplicates until someone removes them. A question you have not defined a metric for is still interpreted by the model, and that interpretation can vary. For one question about one file, ChatGPT may well be the faster tool. We have a longer comparison if you want one. Quiriz earns its place when the same number has to come out the same way, for several people, month after month.
The same number, however it is asked
Try it on sample company data with no signup: ask a question, rephrase it, and compare the answers.
Try Quiriz free →