Start with one question and one measure
The practice workbook asks which support channel had the largest decline in first-contact resolution (FCR) from Q1 to Q2. FCR is the number of eligible tickets resolved on first contact divided by the number of eligible tickets with a known Yes or No outcome. A move from 75% to 50% is a 25-percentage-point decline. The denominator matters as much as the headline rate.
For your own file, decide the measure, population, grouping, period, and output before uploading it. “Which channel's FCR fell most from Q1 to Q2 among completed tickets?” gives ChatGPT a testable task. “Find insights” leaves it to choose the metric and filters, so a plausible answer may address a question you never intended to ask.
| Question part | Rule for the practice workbook | What to settle in your own file |
|---|---|---|
| Measure | Resolved on first contact divided by eligible tickets | Which column is the outcome, and what counts as success? |
| Population | Completed tickets with a Yes or No outcome | Do cancelled, test, or blank records belong? |
| Comparison | Email, Chat, and Phone | Are the categories defined consistently? |
| Period | Use the supplied Quarter field | Which field defines the reporting period? |
| Output | Numerator, denominator, rate, and Q2 minus Q1 change | Which result must someone else reproduce? |
Prepare a safe analysis copy
- Keep the original workbook unchanged.
- Remove names, contact details, account identifiers, secrets, and unrelated confidential columns from the copy if your organization has approved use of ChatGPT for the remaining data. Check hidden sheets and comments too.
- Keep a stable record ID and original row order. Give tables and columns descriptive names.
- Document units, date formats, category definitions, and what a blank means in each important field.
- Identify formulas, hidden sheets, filters, merged cells, and pasted totals that could be counted twice.
If you cannot establish upload authority, use the synthetic workbook in this guide or an approved local analysis tool. A field named Revenue could mean gross, net, invoiced, or collected revenue; put its definition in the workbook or analysis brief before asking for a comparison. OpenAI's spreadsheet cleaning workflow likewise keeps the source unchanged and has the reader inspect any cleaned copy.
Attach the workbook and profile it first
Download the practice XLSX file below. In a ChatGPT conversation that accepts file attachments, attach the file and send the first prompt. OpenAI's dataset workflow starts with an inventory of attached files before analysis. Attachment controls and available file features can vary by account or workspace; the checkpoint here is that ChatGPT confirms it read both sheets before you rely on its answer.
Inspect the attached chatgpt-excel-analysis-practice.xlsx workbook. Do not answer the business question yet.
List every sheet, its purpose, data-row count, column names, and apparent types. Read the Data_Dictionary sheet and report its rules for duplicate Ticket_ID values, allowed Status values, blank First_Contact_Resolved values, the Quarter field, and the Handle_Minutes outlier. Identify the affected ticket IDs and any issue that needs a decision before calculating FCR. Do not silently fill blanks, discard outliers, or infer a quarter from Date.
For this file, the profile should find 53 ticket rows, nine data columns, two repeated ticket IDs, one blank FCR outcome, one Cancelled row, one Training row, and a 240-minute handle-time value. If the sheet count, IDs, or row counts differ, inspect the actual file and resolve the mismatch before continuing.
What the profiling pass found in our test workbook
On August 18, 2026, our team opened a temporary ChatGPT web conversation for the workbook trial. The model selector named GPT-5.6 Sol, and the reasoning control was set to Fast. The synthetic file had two sheets: Ticket_Data with 53 data rows and nine columns, and Data_Dictionary with definitions, valid values, cleaning rules, and the analysis question. No row represented a real person or support case. This records one result on one workbook; it does not predict how another file, account, or model will behave.
Before upload, we created an answer key. The profile had to find the second copies of E-Q2-03 and C-Q1-02; the blank outcome on E-Q2-UNKNOWN; the Cancelled and Training rows E-Q2-CANCEL and E-Q1-TRAIN; and the 240-minute handle time on P-Q2-08. A reader can find these IDs in the downloadable file and check them against ChatGPT's profile.

The profiling response found every planted issue and stopped before answering the business question. It also noticed that the date cells were stored as Excel serials but formatted as dates, found no formulas, and confirmed that category spellings matched the dictionary. If your profile differs, resolve that difference before asking for a conclusion.
Set the row rules before calculating
The dictionary says to keep the first occurrence of each Ticket_ID, include Completed records only, exclude a blank First_Contact_Resolved value from both numerator and denominator, and use the supplied Quarter field. These are rules for this workbook. If two rows in your own data share an ID but disagree on the outcome or date, investigate which row is authoritative instead of automatically keeping the first.
The 240-minute handle-time value stays in the data because the dictionary does not authorize removing it. It has no effect on FCR, which uses the Yes or No outcome. It would matter if the question changed to average handle time. Defining the measure first prevents an irrelevant cleanup choice from changing the population.
| Check | Observed in this file | Rule for the FCR question |
|---|---|---|
| Repeated IDs | Two second occurrences | Keep the first copy of each ID |
| Status | One Cancelled and one Training row | Count Completed only |
| Outcome | One blank Email Q2 outcome | Exclude it from both sides of the rate |
| Handle time | One 240-minute Phone Q2 value | Keep it; handle time is not the FCR measure |
| Period | Dates and a Quarter column | Group by the supplied quarter |
Ask the full analysis question
Once the profile agrees with the workbook, send a complete request tied to its actual field names. A filled prompt makes it easier to see whether the answer followed the dictionary. It also avoids burying a cleaning decision in an earlier chat message that a colleague cannot inspect.
Using Ticket_Data and the rules in Data_Dictionary, answer: Which support channel had the largest deterioration in first-contact resolution from Q1 to Q2?
Keep the first row for each Ticket_ID in the workbook's original order. Use Status = Completed. Exclude rows where First_Contact_Resolved is blank; count Yes in the numerator and Yes or No in the denominator. Use the supplied Quarter field. Retain the 240-minute Handle_Minutes value because this question does not use handle time.
Return one row per Channel with Q1 resolved/eligible, Q1 FCR, Q2 resolved/eligible, Q2 FCR, and the Q2-minus-Q1 percentage-point change. Name every excluded Ticket_ID and explain why. Show the formula or calculation steps. State what this small workbook cannot establish about the reason for a change. If you cannot inspect a sheet or verify a rule, stop and say which part is unresolved.
Read the result with its denominators
The recorded ChatGPT response matched the independently calculated answer. Email had the largest decline: six of eight eligible tickets were resolved on first contact in Q1, compared with four of eight in Q2. That is 75.0% versus 50.0%, a change of minus 25.0 percentage points. The other channels give context without changing the ranking.

| Channel | Q1 resolved / eligible | Q1 FCR | Q2 resolved / eligible | Q2 FCR | Change |
|---|---|---|---|---|---|
| 6 / 8 | 75.0% | 4 / 8 | 50.0% | -25.0 points | |
| Chat | 7 / 8 | 87.5% | 6 / 8 | 75.0% | -12.5 points |
| Phone | 5 / 8 | 62.5% | 6 / 8 | 75.0% | +12.5 points |
The response named the two repeated rows removed, the two status exclusions, the blank Email outcome excluded from both sides of the rate, and the choice to use Quarter rather than derive a period from Date. It retained the handle-time outlier because that field was irrelevant to FCR.
Each channel-quarter cell has only eight eligible tickets. A one-ticket difference moves its FCR rate by 12.5 points, so the ranking describes this file without proving a stable change in channel performance. The workbook has no issue type, severity, staffing, queue volume, or policy-change information. It cannot establish why Email declined.
In the original trial, the conclusion, six fractions, six rates, three changes, and cleaning sequence matched a key calculated before upload. One successful synthetic workbook does not establish a general error rate. Recheck every decision-relevant output in your own analysis.
Recalculate the answer in Excel
Use the untouched original for reference and add two helper columns to an analysis copy of Ticket_Data. The existing columns run from A through I; data rows run from 2 through 54. In J1, type Keep_First. In K1, type Eligible_FCR. Enter the formulas below in row 2 and fill them through row 54 before sorting. The first-copy rule depends on the original row order.
J2: =COUNTIF($A$2:A2,A2)=1
K2: =AND(J2,E2="Completed",OR(F2="Yes",F2="No"))
Column J marks the first occurrence of each ticket ID. Column K keeps only first-copy, completed tickets with a known Yes or No outcome. You should get 48 TRUE rows in K: 53 original data rows minus two repeated copies, two non-completed records, and one blank outcome. If you get another count, inspect the affected IDs rather than changing the expected answer.
For Email Q1, these COUNTIFS formulas reproduce the first numerator and denominator. Change "Email" to "Chat" or "Phone", and "Q1" to "Q2", for the other five cells. Divide each numerator by its denominator, then subtract Q1 from Q2 for each channel.
Resolved: =COUNTIFS($D$2:$D$54,"Email",$C$2:$C$54,"Q1",$K$2:$K$54,TRUE,$F$2:$F$54,"Yes")
Eligible: =COUNTIFS($D$2:$D$54,"Email",$C$2:$C$54,"Q1",$K$2:$K$54,TRUE)
The formulas return 6 and 8; 6/8 is 75%. For Q2, Email returns 4 and 8, so 4/8 - 6/8 = -0.25, or minus 25 percentage points. If a channel-quarter denominator is zero in your own data, report its rate as unavailable instead of dividing by zero or calling it a 0% rate.
See how common mistakes change the answer
The table changes one rule at a time from the correct Email result. These figures were recalculated from the downloadable workbook for this revision; they are sensitivity checks, not additional ChatGPT trial results. Each mistake produces a credible-looking number, which is why the numerator and denominator belong in the final report.
| Email cell | Correct rule | If one rule is mishandled | What changed |
|---|---|---|---|
| Q2 | 4 / 8 = 50.0% | 5 / 9 = 55.6% | The second E-Q2-03 copy was counted |
| Q2 | 4 / 8 = 50.0% | 4 / 9 = 44.4% | The blank outcome was treated as No |
| Q2 | 4 / 8 = 50.0% | 5 / 9 = 55.6% | The Cancelled ticket was included |
| Q1 | 6 / 8 = 75.0% | 6 / 9 = 66.7% | The Training ticket was included |
The identical 55.6% values in two rows come from different errors. A final rate alone would hide that distinction. Ask ChatGPT to list included and excluded ticket IDs whenever duplicate handling, blank-value treatment, or status filtering could change the result. Then spot-check the source rows in Excel.
Adapt the method to different Excel questions
A rate comparison is only one spreadsheet task. Before reusing the prompts, identify the shape of the question and change the validation method with it. The examples outside the FCR trial below are either arithmetic from the same workbook or instructions for files with those features. They are not claims that the August ChatGPT session tested those situations.
When the question is a total or average
Specify the unit, rows to include, and whether the result should be a sum, mean, median, or weighted average. In this workbook, the Phone Q2 handle times for the eight eligible tickets have a mean of 48.4 minutes and a median of 21.5 minutes. The 240-minute P-Q2-08 value drives much of that gap. If that row were removed, the mean of the remaining seven would be 21.0 minutes. Keep the recorded value unless you establish that it is erroneous or explicitly run a with-and-without sensitivity analysis. For FCR, its handle time never enters the calculation.
When blanks have different meanings
A blank outcome can mean “not recorded,” “not applicable,” or “No,” depending on the business process. The practice dictionary says to exclude its one blank FCR value; it does not say to convert it to No. For a sales workbook, a blank discount might legitimately mean zero, while a blank sale price could mean the transaction has not closed. Put the meaning in the workbook or analysis brief. If it is unknown and could change the result, show the affected row count and pause the conclusion.
When the workbook contains multiple data tables
The practice file's second sheet is a dictionary, so no join is needed. If your workbook instead has separate Orders and Customers tables, identify the key in each, check whether it is unique where expected, count unmatched rows, and test whether a join multiplies transactions. Ask for row counts before and after the join and a list of unmatched IDs. A join that turns one order into several rows can inflate revenue while leaving a tidy-looking result. OpenAI's dataset workflow recommends profiling candidate keys and trial joins before accepting a merged file.
When formulas, pivots, or hidden sheets matter
Ask which cells are inputs, formulas, pasted values, and totals. Compare a formula result with the source rows that feed it; do not count both a detail table and its summary row. If a conclusion depends on a hidden sheet, inspect and authorize that sheet before upload. If the workbook displays a formatted date but an analysis shows a serial number, check the cell value and format in Excel before assuming the date changed. The practice workbook had formatted date cells and no formulas, so the original trial does not establish how ChatGPT would handle a formula-heavy model.
When the file is large or poorly structured
Require ChatGPT to report how many sheets and data rows it actually read, not just how many it expected. Ask for the first and last record IDs and counts for the groups used in the answer. If part of a workbook is missed, isolate the relevant table or export a documented CSV copy, then reconcile its row count and totals with the source. Do not describe a partial read as a complete analysis. The same check applies if merged cells, a pasted report header, or several tables on one sheet make fields ambiguous.
Separate the finding from a possible cause
“Email FCR fell from 75.0% to 50.0% in this file” is supported by the 6/8 and 4/8 counts. “Email support became worse because staffing changed” is a hypothesis the workbook cannot test. Issue mix, customer difficulty, staffing, queue volume, policy changes, and reporting behavior are absent. A useful handoff names those missing variables and says what additional data could distinguish the explanations.
When ChatGPT's answer is hard to verify
| What you see | What to ask or check next | When to stop |
|---|---|---|
| Only a ranked conclusion | Ask for the numerator, denominator, filters, and source row IDs behind every result | The rows used cannot be shown |
| A sheet or row count differs | Compare the named file and sheet with the source; check whether headers or totals were counted as records | The population cannot be reconciled |
| A blank was filled automatically | Restore the original value and apply the documented blank rule; recalculate both sides of the rate | No owner can define the blank |
| A join changes row count | Request key-uniqueness, unmatched-ID, and before-and-after row-count reports | Unexplained row multiplication affects the measure |
| Your Excel result disagrees | Compare one channel-quarter cell row by row, starting with duplicates and excluded statuses | The mismatch remains unexplained |
| The result sounds causal | Ask which columns support the explanation and which alternative causes remain open | The claimed cause is absent from the data |
For a stubborn disagreement, ask ChatGPT to show the exact included ticket IDs for one cell, such as Email Q2, with Ticket_ID, Status, Quarter, and First_Contact_Resolved. Compare that short list with the analysis copy. “Double-check the answer” is less useful because it does not expose the inputs.
Save a result another person can reproduce
Keep the original workbook, the authorized analysis copy, the question, the dictionary or field definitions, the row decisions, the final counts, and the independent Excel check together. A chat transcript can explain the work, but it should not be the only place the rules live. The downloadable CSV has a row for each of the nine handoff checks below.
| Check | Evidence to keep | Stop if |
|---|---|---|
| Source | Original workbook version or hash and named analysis copy | You cannot identify the file analyzed |
| Authority | Approval for the fields sent to the tool | Upload permission is unresolved |
| Definition | Measure, population, grouping, period, and blank rule | A field has competing meanings |
| Profile | Sheet and row counts, duplicates, blanks, and outliers | A material issue is unexplained |
| Formula | Filters, numerator, denominator, and calculation | Only the final number is visible |
| Recalculation | Independent Excel formula, pivot, or script result | The independent value disagrees |
| Interpretation | Observation separated from possible cause | The file cannot support a claimed cause |
| Limitation | Small cells, exclusions, and unresolved questions | A missing caveat could reverse the decision |
| Handoff | Files and instructions another reviewer can use | The result depends on an inaccessible chat |
If a definition or independent calculation remains unresolved, report the counts you verified and the gap you could not close. Wait to make a ranked business recommendation until the disputed rows or rules have an owner.
