What Is Vibe Coding? A Practical Guide for Spreadsheet Users
Summary
Vibe coding is describing what you want to an AI in plain English, running the code it writes, and judging it by results instead of reading every line. In spreadsheets it means asking for a formula or an Apps Script, pasting it into a copy of your file, and checking the output against a number you trust. It is quick and fairly safe for low-stakes sheets, and risky when scripts edit live data.
What is vibe coding? It is building something by describing it in plain English to an AI, running whatever code comes back, and steering by results instead of reading every line. Andrej Karpathy coined the term in February 2025. For spreadsheet people, it means asking an AI for a formula or an Apps Script, pasting it in, and checking whether the numbers come out right. Biscuit has already fetched the details for you.
Where the term comes from, and what it was never meant to be
Karpathy's original post described a way of working where you "fully give in to the vibes" and forget the code even exists. He pitched it as fine for throwaway weekend projects, not for production software.
Then the word drifted. Today people use it for any coding done with AI help. Simon Willison pushed back on that in his essay on what counts as vibe coding: if you review, test and understand the code, that is ordinary AI-assisted programming, not vibe coding.
Here is the working definition we use on this blog: vibe coding is delegating the writing to an AI and judging the output only by what it does. The less you read, the more vibe it is.
Why a spreadsheet is the friendliest place to try it
Most vibe coding horror stories involve a deployed app, user data and a security hole. A spreadsheet is a smaller blast radius. You have a tab of sample data, an expected answer, and Ctrl+Z.
It also has a built-in test bench. If you asked for a total and the total differs from what a quick SUM gives you, you know within five seconds.

A formula is the smallest possible vibe coding project
You have done this already. You typed "sum column C where column A says Paris and the date is in March" into a chat box, and a formula came back.
Here is what that looks like in a real cell:
=SUMIFS(C:C, A:A, "Paris", B:B, ">="&DATE(2026,3,1), B:B, "<"&DATE(2026,4,1))C:Cis the sum_range, the column you add up.A:A, "Paris"is the first critère: city must be Paris.B:B, ">="&DATE(2026,3,1)andB:B, "<"&DATE(2026,4,1)fence the dates to March.
Works in Excel and Google Sheets. SUMIFS exists since Excel 2007, so nobody is stranded on an old version.
That is vibe coding at its tamest. You described the goal, accepted the formula, and checked it against a known total. The "vibe" part is whether you looked at the arguments or just trusted the cell turning green.
Where it gets spicier: scripts, macros and Apps Script
Formulas stay inside the grid. Scripts reach outside it: send emails, rename tabs, loop over files, change data in place. That is where vibe coding earns its reputation.
Ben Collins, a Google Sheets educator, walked through vibe coding an Apps Script that counts cells by background colour, which no built-in formula does. He prompted in small steps: count the cells, then add the colour names, then a total, then a custom menu, then an email of the results. He pasted each script into the editor and ran it. When something broke, he pasted the error message back to the AI. It took him under 30 minutes against an estimated one to two hours by hand. His takeaway is the one to keep: the buck stops with you.
The loop that actually works (and the one that bites)
The working loop is boring, which is the point:
Describe the sheet. Name the tab, the columns and one example row.
Ask for one small thing at a time, not a whole system.
Paste the result into a copy of the file.
Compare against a number you already know is right.
If it breaks, paste the exact error back. Do not paraphrase it.
The loop that bites: asking for a 200-line script in one prompt, running it on the live file, and noticing three days later that column F is off by one row. Biscuit comes back empty-handed and wagging, and nobody notices.
A prompt template you can steal
Vague prompts produce confident nonsense. This structure gives the AI what it needs:
I work in Google Sheets (or Excel 2019, say which).
Tab "Orders": A = order date, B = city, C = amount, header in row 1, data to row 480.
Goal: total amount for Paris in March 2026.
Give me one formula, then explain each argument in one line.Four lines, and the answer changes from a guess into something you can verify. Naming the last row also kills the silent range error we get to below.
Three checks that catch most bad output
Before trusting anything, run these:
The known-total check. Compute the answer a second, dumber way (a filter plus the status bar sum) and compare.
The edge-row check. Look at the first and last row of your data. Off-by-one bugs live there.
The empty-cell check. Blank cells, text that looks like numbers, and stray spaces break formulas quietly. Drop in a deliberately ugly row and see what happens.
If all three pass, you can usually keep the result. If one fails, paste the failing case back into the chat. The AI is good at fixing a bug it can see.

A worked example: flag duplicate invoice numbers
Say a colleague sends a sheet with 3,000 invoice numbers in column A and asks you to flag repeats. No need for a script here. The prompt "flag duplicates in column A" returns a formula you can fill down in column B:
=IF(COUNTIF($A$2:$A$3001, A2)>1, "duplicate", "")$A$2:$A$3001is the plage: every invoice number, locked with dollar signs so it does not slide when you fill down.A2is the critère: the invoice number on this row.>1means it shows up more than once, counting itself.
Works in Excel and Google Sheets, all versions. The vibe coder's trap is the range: if the data grows to row 3500, the formula quietly ignores the new rows. The careful version uses a whole column such as $A:$A, or in Sheets an ARRAYFORMULA. Array formulas deserve a warning too: in old Excel they need Ctrl+Shift+Enter, in Excel 365 they just work. Biscuit comes back with the stick, but you still have to check it is the right stick.
Now the same task as a script. You would ask for an Apps Script that highlights duplicates in red. It works, but it changes cell colours in place, it needs permissions the first time, and nobody will review it next quarter. For a task this small, the formula wins. Reach for scripts when the job needs to leave the grid: sending, renaming, looping, scheduling.
What vibe coding gets wrong in spreadsheets
Skip blind trust in these four places.
Silent range errors. The AI writes A2:A100 when your data runs to row 480. Nothing errors. The total is simply wrong. Check the last row every time.
Version mismatches. A formula using XLOOKUP, LET or dynamic arrays fails in Excel 2016 and 2019. The AI does not know which Excel you have unless you say so. Tell it.
Excel versus Sheets syntax. QUERY and ARRAYFORMULA exist in Google Sheets only. Excel has no QUERY. If a chat answer mixes the two, you get a #NAME? error and a confused afternoon.
Scripts that change data in place. An Apps Script that "cleans" a column overwrites it. Always run on a duplicate first. Scripts also ask for permissions the first time, so read what you are authorising.
Vibe coding versus just using AI to write formulas
Not every AI-written formula is vibe coding. Here is how we sort it:
Ask for a formula, read each argument, test it. AI-assisted. Low risk.
Ask for a formula, paste, glance at the result. Light vibe coding. Low to medium risk.
Ask for a script, run it on a copy, test totals. Vibe coding with a seatbelt. Medium risk.
Ask for a script, run it on the live file, never read it. Full vibe coding. High risk.
Most useful spreadsheet work sits in the middle two rows. That is fine. The label matters less than the habit of testing against a number you trust.
Tools people reach for
For one-off formulas, a plain chat assistant is enough. For longer scripts and files you will maintain, code-aware tools help because they can see the whole project instead of one pasted snippet. Cursor and GitHub Copilot work inside a code editor, and Claude Code runs from the terminal.
Honestly, if all you want is "what is the formula for X", you do not need any of those. Formula.dog exists for exactly that job: you describe the problem, Biscuit fetches the formula, and you get the Excel and Sheets versions side by side.

Does vibe coding make you worse at spreadsheets?
Fair worry. If the AI always writes the formula, do you ever learn what SUMIFS does? Our take: it depends on whether you read the explanation. Ask for the formula and the argument-by-argument breakdown every time, and you pick up syntax by osmosis, the same way you learned VLOOKUP by copying someone else's file.
The risk is not forgetting syntax. The risk is losing the instinct that says "this total looks too high". That instinct is the one skill vibe coding cannot replace, and it is why the known-total check comes first. Keep a few sheets where you write everything by hand. Think of it as the dog walk: not strictly necessary every day, but things get strange without it.
Teams add one more wrinkle. A formula nobody on the team understands is a handover problem even if it works today. If someone else will inherit the file, add a note cell that says what the formula does and which prompt produced it.
Who should vibe code a spreadsheet, and who should not
Worth it if you know what the right answer looks like, the file is low stakes, and you can test on a copy. Ops people building a weekly report template, marketers cleaning a campaign export, students checking homework logic.
Skip it if the sheet feeds payroll, invoices or a board deck and nobody on the team can sanity check the output. In that case, use AI to draft, then read every argument. That is AI-assisted work, and it is the safer label for finance files.
How to start this afternoon in ten minutes
Open a copy of a real sheet. Pick one annoying task, such as splitting "Last, First" names or flagging duplicate invoice numbers. Describe it with column letters and one example. Paste the answer in, compare against three rows you checked by hand, and stop there.
If it worked, you just vibe coded. If it did not, paste the error back and ask again. Good boy either way.