Every formula lives in a room. Walk through the house. Never forget a formula again.
Method of Loci + Chunking + Spaced Repetition + Real BSP Data
Click any room to jump to its formulas. Close your eyes and walk through this house before the exam.
These are the proven techniques woven into every section of this guide.
You walk through the front door and see 5 trophies on a shelf. Each trophy is engraved with a function name.
SACMM = "Sam Ate Cake, Maxed Milkshakes"SELECT SUM(revenue) FROM jobs;
=SUM(revenue) across all completed jobs = $6,456,070SELECT AVG(total) FROM jobs WHERE job_status = 'completed';
=AVERAGE(job_total) = $2,120 average ticketSELECT COUNT(total) FROM jobs WHERE job_status = 'completed';
=COUNT(completed_jobs) = 10,509 completed jobsSELECT MAX(total) FROM jobs WHERE job_status = 'completed';
=MAX(job_total) = $41,356 (Job #3164-1)=MIN(job_total) = $24You walk into the kitchen and see three things: a kitchen scale (AVERAGE/Mean), a knife cutting exactly in the middle (MEDIAN), and the most popular dish on the menu board (MODE).
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total) FROM jobs;
=MEDIAN(job_total) = $626 -- the TRUE typical ticketSELECT total, COUNT(*) as freq FROM jobs GROUP BY total ORDER BY freq DESC LIMIT 1;
A bouncer stands at the living room door with a clipboard. He counts how many people get in -- but ONLY those who match his rules.
SELECT COUNT(*) FROM jobs WHERE job_type = 'Sewer';
=COUNTIF(job_type, "Sewer") = 9 jobsSELECT COUNT(*) FROM jobs WHERE job_type = 'Sewer' AND total > 5000;
=COUNTIFS(job_type,"Sewer", total,">5000") = counts sewer jobs over $5K=COUNTIF(range,"A") + COUNTIF(range,"B")A waiter is at the table. He only adds up certain items on the bill -- not everything, just what matches your request.
Where, What, Add (range, criterion, sum_range)Add, Where, What (sum_range FIRST, then range/criterion pairs)SELECT SUM(total) FROM jobs WHERE job_type = 'Sewer';
=SUMIF(job_type,"Sewer",total) = $26,038 total sewer revenue=SUMIF(A1:A10,">100") sums all values in A1:A10 that are greater than 100.SELECT SUM(total) FROM jobs WHERE job_type = 'Sewer' AND total > 5000;
SELECT AVG(total) FROM jobs WHERE job_type = 'Sewer';
=AVERAGEIF(job_type,"Sewer",total) = $8,679 avg sewer ticketOn the desk sits a sorting machine. Papers go in the top. The machine checks each paper and routes it into different folders based on rules.
SELECT CASE WHEN total > 1000 THEN 'High Value' ELSE 'Standard' END FROM jobs;
=IF(total > 2120, "Above Average", "Below Average")=IF(A1>90,"A",IF(A1>80,"B","C")). But nested IFs get messy fast. For 3+ conditions, use IFS instead.SELECT CASE WHEN total>10000 THEN 'Premium' WHEN total>2000 THEN 'High' WHEN total>500 THEN 'Mid' ELSE 'Low' END FROM jobs;
=IFS(ticket>10000,"Elite", ticket>5000,"Premium", ticket>2000,"Standard", TRUE,"Entry")TRUE, "default" as the last pair. This is the "else" / catch-all. Without it, if no test is TRUE, IFS returns #N/A error.Walk into the garage. Tools hang on the wall: a tape measure (ABS = distance, always positive), a level (ROUND = precision), a floor jack (FLOOR), a ceiling fan (CEILING), and a wrench with a remainder (MOD).
SELECT ABS(-47); -- returns 47
=ABS(revenue_this_month - revenue_last_month)=ROUND(6456070/10509, 2) = $614.35 revenue per job (more precise than $614)SELECT FLOOR(7.8), CEILING(7.2); -- returns 7, 8
=FLOOR(23, 5) = 20 (nearest multiple of 5 going down). =CEILING(23, 5) = 25 (nearest multiple of 5 going up).SELECT 17 % 5; -- returns 2 (or MOD(17, 5) in some databases)
=MOD(10509, 7) = 3 -- 10,509 jobs divided into weeks of 7 = 1,501 full weeks with 3 extra days. Useful for cycle analysis.=MOD(x, 2) is a classic trick to test odd/even. If result = 0, x is even. If result = 1, x is odd. Combine with IF: =IF(MOD(A1,2)=0,"Even","Odd")Step into the backyard and see wildflowers. Two patches: the star patch (*) that grows ANY number of flowers, and the single bloom (?) that always grows exactly ONE flower.
* = zero or more characters (like a field of ANY number of wildflowers)? = exactly ONE character (like ONE single bloom)"Sew*" matches "Sew", "Sewer", "Sewing", "Sewage". The star eats anything after "Sew"."Pip?" matches "Pipe" and "Pips" (4 characters total) but NOT "Piped" (5 characters).=COUNTIF(job_type, "*sewer*") -- counts any job with "sewer" anywhere in the type name=SUMIF(job_type, "Drain*", total) -- sums revenue for all "Drain..." job types (Drain Cleaning, Drain Repair, etc.)
"~*" matches an actual asterisk.One alarm clock goes off and the ENTIRE room wakes up at once. One formula, applied to every row simultaneously.
SELECT quantity * unit_price AS line_total FROM order_items; -- applies to all rows
=ARRAYFORMULA(IF(job_total > 2120, "Above Avg", "Below Avg"))A guest arrives with a suitcase full of data from ANOTHER house (spreadsheet). They unpack it right into your room.
Down in the basement is a locked trophy case. The biggest and smallest awards are here -- but only for winners who meet the conditions.
SELECT MAX(total) FROM jobs WHERE job_type = 'Sewer';
=MAXIFS(total, job_type, "Sewer") = the biggest single sewer jobSELECT MIN(total) FROM jobs WHERE job_type = 'Sewer';
=MINIFS(total, job_type, "Sewer") = the smallest sewer jobThe forgetting curve is brutal: you lose 70% within 24 hours without review. This schedule beats it.
Every morning, close your eyes and mentally walk through the house:
1. 🚪 Front Door: Name the Big 5 (SACMM)
2. 🍳 Kitchen: Mean vs Median vs Mode
3. 🛋️ Living Room: COUNTIF(where, what) / COUNTIFS(where1, what1, where2, what2)
4. 🍽️ Dining Room: SUMIF = WWA / SUMIFS = AWW ("Aww!")
5. 💼 Office: IF(test, yes, no) / IFS(test1, val1... TRUE, default)
6. 🔧 Garage: ABS, ROUND, FLOOR, CEILING, MOD
7. 🌻 Backyard: * = any, ? = one
8. 🛏️ Bedroom: ARRAYFORMULA = one alarm, all rows
9. 🛋️ Guest Room: IMPORTRANGE("url", "range")
10. 🏆 Basement: MAXIFS/MINIFS = AWW (output first)
Under 3 minutes = you own these formulas.
The entire house on one table. Print this, tape it to your wall, review daily.
| Room | Formula | Syntax | Arg Order | BSP Example |
|---|---|---|---|---|
| 🚪 Front Door | SUM | =SUM(range) | range | $6,456,070 total revenue |
| 🚪 Front Door | AVERAGE | =AVERAGE(range) | range | $2,120 avg ticket |
| 🚪 Front Door | COUNT | =COUNT(range) | range | 10,509 completed jobs |
| 🚪 Front Door | MAX | =MAX(range) | range | $41,356 biggest job |
| 🚪 Front Door | MIN | =MIN(range) | range | $24 smallest job |
| 🍳 Kitchen | MEDIAN | =MEDIAN(range) | range | $626 true typical ticket |
| 🍳 Kitchen | MODE | =MODE(range) | range | ~$89 (dispatch fee) |
| 🛋️ Living Room | COUNTIF | =COUNTIF(range, criterion) | Where, What | 9 sewer jobs |
| 🛋️ Living Room | COUNTIFS | =COUNTIFS(r1, c1, r2, c2) | Where, What pairs | Sewer jobs > $5K |
| 🍽️ Dining Room | SUMIF | =SUMIF(range, crit, sum_range) | WWA | $26,038 sewer revenue |
| 🍽️ Dining Room | SUMIFS | =SUMIFS(sum_range, r1, c1...) | AWW ⚠️ FLIPPED! | Sewer revenue > $5K |
| 🍽️ Dining Room | AVERAGEIF | =AVERAGEIF(range, crit, avg_range) | WWA | $8,679 avg sewer ticket |
| 🍽️ Dining Room | AVERAGEIFS | =AVERAGEIFS(avg_range, r1, c1...) | AWW ⚠️ FLIPPED! | Avg completed sewer |
| 💼 Office | IF | =IF(test, true, false) | test, yes, no | Above/Below $2,120 |
| 💼 Office | IFS | =IFS(t1,v1, t2,v2, TRUE,def) | test/value pairs | Tech tier labels |
| 🔧 Garage | ABS | =ABS(value) | value | Revenue delta magnitude |
| 🔧 Garage | ROUND | =ROUND(value, places) | value, decimal places | $614.35 per job |
| 🔧 Garage | ROUNDUP/DOWN | =ROUNDUP(val, places) | value, decimal places | Force direction |
| 🔧 Garage | FLOOR/CEILING | =FLOOR(val) / =CEILING(val) | value [, significance] | Whole number rounding |
| 🔧 Garage | MOD | =MOD(number, divisor) | number, divisor | Odd/even check |
| 🌻 Backyard | Wildcards | * = any chars, ? = one char | in criteria only | "Sew*" matches Sewer |
| 🛏️ Bedroom | ARRAYFORMULA | =ARRAYFORMULA(expr) | any expression with ranges | Label all 10,509 jobs |
| 🛋️ Guest Room | IMPORTRANGE | =IMPORTRANGE("url","range") | url, "Sheet!Range" | Cross-sheet data pull |
| 🏆 Basement | MAXIFS | =MAXIFS(max_range, r1, c1) | AWW ⚠️ | Biggest sewer job |
| 🏆 Basement | MINIFS | =MINIFS(min_range, r1, c1) | AWW ⚠️ | Smallest sewer job |
Non-S functions (SUMIF, AVERAGEIF): output range is LAST = WWA (Where, What, Add)
S functions (SUMIFS, AVERAGEIFS, MAXIFS, MINIFS): output range is FIRST = AWW (Add, Where, What)
🧠 Memory trick: "The S makes it Switch! AWW -- it's backwards!"
If you remember nothing else from this guide, remember THIS. It's the #1 exam trap.
Mean (AVERAGE): $2,120 -- pulled up by outlier jobs ($41K max)
Median: $626 -- the TRUE middle ticket
Gap: $1,494 = outliers are present
📌 Exam rule: Mean > Median = Right-skewed (positive skew). A few large values pull the mean right.
📌 When to use which: Use MEDIAN when outliers exist. Mean is misleading with skewed data.
📌 BSP proves it: If you told Stephanie "our average ticket is $2,120" she'd think typical jobs are $2K. The truth is $626. The median doesn't lie.