The request

From Jennifer Castillo, Support Team Lead
Your goal
Step 1 of 3. In G2:G37, write the custom whole-number rule for the quantity in column E: TRUE when it is a number (ISNUMBER), whole (equal to its INT) and greater than 0. In H2:H37, write the list rule for the channel in column C: TRUE when it appears in the allowed list K2:K4 (COUNTIF over the locked list, greater than 0).
- Fill
G2:H37with the right valuesnot done yet - With formulas, not typed numbersnot done yet
- Use
ANDISNUMBERINTCOUNTIFnot done yet
Step 2 of 3. In I2:I37, return the row's status: bad quantity when G is FALSE, otherwise bad channel when H is FALSE, otherwise ok (IFS, quantity tested first). In L8, count the rows whose status is not ok with COUNTIF.
- Fill
I2:I37, L8with the right valuesnot done yet - With formulas, not typed numbersnot done yet
- Use
COUNTIFnot done yet
Step 3 of 3. In J2:J37, write the highlight rule for lines that need a second look: TRUE when the status in column I is ok AND the line value (quantity times unit_price) is greater than the threshold in L6. Lock the columns as you would in a Use a formula rule over A2:F37: $I2, $E2, $F2, and lock L6 fully.
- Fill
J2:J37with the right valuesnot done yet - With formulas, not typed numbersnot done yet
- Use
ANDnot done yet
Step 1 · your sheet
| A | B | C | D | E | F | G | H | I | J | K | L | M | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | entry_id | order_id | channel | product_id | quantity | unit_price | qty_ok | channel_ok | status | big_line | Allowed channels | ||
| 2 | 13800 | 6481 | app | 142 | 1 | 36.99 | web | ||||||
| 3 | 13801 | 6481 | app | 172 | 2 | 18.99 | app | ||||||
| 4 | 13802 | 6482 | marketplace | 168 | 4 | 149.00 | marketplace | ||||||
| 5 | 13803 | 6482 | marketplace | 138 | 1 | 199.00 | |||||||
| 6 | 13804 | 6482 | marketplace | 142 | 1 | 36.99 | Big line over | 500.00 | |||||
| 7 | 13805 | 6483 | app | 150 | 1 | 18.99 | |||||||
| 8 | 13806 | 6483 | app | 216 | 1 | 379.00 | Rows rejected | ||||||
| 9 | 13807 | 6484 | web | 141 | 6 | 13.99 | |||||||
| 10 | 13808 | 6484 | web | 131 | 2 | 349.00 | |||||||
| 11 | 13809 | 6485 | marketplace | 178 | 1 | 70.99 | |||||||
| 12 | 13810 | 6485 | marketplace | 145 | 2 | 10.99 | |||||||
| 13 | 13811 | 6486 | app | 159 | 2 | 179.00 | |||||||
| 14 | 13812 | 6486 | app | 175 | 3 | 84.99 | |||||||
| 15 | 13813 | 6487 | app | 131 | 2 | 349.00 | |||||||
| 16 | 13814 | 6487 | app | 171 | 2 | 27.99 | |||||||
| 17 | 13815 | 6487 | app | 164 | 2 | 52.99 | |||||||
| 18 | 13816 | 6488 | phone | 122 | 1 | 29.99 | |||||||
| 19 | 13817 | 6489 | web | 187 | 3 | 149.00 | |||||||
| 20 | 13818 | 6489 | web | 132 | 1 | 189.00 | |||||||
| 21 | 13819 | 6490 | marketplace | 162 | 1.5 | 23.99 | |||||||
| 22 | 13820 | 6490 | marketplace | 164 | 4 | 52.99 | |||||||
| 23 | 13821 | 6490 | marketplace | 186 | 1 | 20.99 | |||||||
| 24 | 13822 | 6490 | marketplace | 157 | 2 | 109.00 | |||||||
| 25 | 13823 | 6490 | marketplace | 155 | 1 | 169.00 | |||||||
| 26 | 13824 | 6491 | website | 145 | -4 | 10.99 | |||||||
| 27 | 13825 | 6491 | web | 177 | 1 | 169.00 | |||||||
| 28 | 13826 | 6491 | web | 200 | 1 | 179.00 | |||||||
| 29 | 13827 | 6491 | web | 194 | 2 | 149.00 | |||||||
| 30 | 13828 | 6491 | web | 164 | 1 | 52.99 | |||||||
| 31 | 13829 | 6492 | web | 215 | 1 | 93.99 | |||||||
| 32 | 13830 | 6492 | web | 180 | 1 | 19.99 | |||||||
| 33 | 13831 | 6493 | app | 110 | 2 | 179.00 | |||||||
| 34 | 13832 | 6494 | web | 109 | 1 | 999.00 | |||||||
| 35 | 13833 | 6494 | web | 119 | 0 | 259.00 | |||||||
| 36 | 13834 | 6495 | app | 145 | 1 | 10.99 | |||||||
| 37 | 13835 | 6496 | web | 178 | 1 | 70.99 | |||||||
| 38 | |||||||||||||
| 39 |
Loading the editor…
Reference solution
Mote checks your result
Press Check. Each right cell becomes a firefly in your lantern.
Step 2 · your sheet
| A | B | C | D | E | F | G | H | I | J | K | L | M | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | entry_id | order_id | channel | product_id | quantity | unit_price | qty_ok | channel_ok | status | big_line | Allowed channels | ||
| 2 | 13800 | 6481 | app | 142 | 1 | 36.99 | TRUE | TRUE | web | ||||
| 3 | 13801 | 6481 | app | 172 | 2 | 18.99 | TRUE | TRUE | app | ||||
| 4 | 13802 | 6482 | marketplace | 168 | 4 | 149.00 | TRUE | TRUE | marketplace | ||||
| 5 | 13803 | 6482 | marketplace | 138 | 1 | 199.00 | TRUE | TRUE | |||||
| 6 | 13804 | 6482 | marketplace | 142 | 1 | 36.99 | TRUE | TRUE | Big line over | 500.00 | |||
| 7 | 13805 | 6483 | app | 150 | 1 | 18.99 | TRUE | TRUE | |||||
| 8 | 13806 | 6483 | app | 216 | 1 | 379.00 | TRUE | TRUE | Rows rejected | ||||
| 9 | 13807 | 6484 | web | 141 | 6 | 13.99 | TRUE | TRUE | |||||
| 10 | 13808 | 6484 | web | 131 | 2 | 349.00 | FALSE | TRUE | |||||
| 11 | 13809 | 6485 | marketplace | 178 | 1 | 70.99 | TRUE | TRUE | |||||
| 12 | 13810 | 6485 | marketplace | 145 | 2 | 10.99 | TRUE | TRUE | |||||
| 13 | 13811 | 6486 | app | 159 | 2 | 179.00 | TRUE | TRUE | |||||
| 14 | 13812 | 6486 | app | 175 | 3 | 84.99 | TRUE | TRUE | |||||
| 15 | 13813 | 6487 | app | 131 | 2 | 349.00 | TRUE | TRUE | |||||
| 16 | 13814 | 6487 | app | 171 | 2 | 27.99 | TRUE | TRUE | |||||
| 17 | 13815 | 6487 | app | 164 | 2 | 52.99 | TRUE | TRUE | |||||
| 18 | 13816 | 6488 | phone | 122 | 1 | 29.99 | TRUE | FALSE | |||||
| 19 | 13817 | 6489 | web | 187 | 3 | 149.00 | TRUE | TRUE | |||||
| 20 | 13818 | 6489 | web | 132 | 1 | 189.00 | TRUE | TRUE | |||||
| 21 | 13819 | 6490 | marketplace | 162 | 1.5 | 23.99 | FALSE | TRUE | |||||
| 22 | 13820 | 6490 | marketplace | 164 | 4 | 52.99 | TRUE | TRUE | |||||
| 23 | 13821 | 6490 | marketplace | 186 | 1 | 20.99 | TRUE | TRUE | |||||
| 24 | 13822 | 6490 | marketplace | 157 | 2 | 109.00 | TRUE | TRUE | |||||
| 25 | 13823 | 6490 | marketplace | 155 | 1 | 169.00 | TRUE | TRUE | |||||
| 26 | 13824 | 6491 | website | 145 | -4 | 10.99 | FALSE | FALSE | |||||
| 27 | 13825 | 6491 | web | 177 | 1 | 169.00 | TRUE | TRUE | |||||
| 28 | 13826 | 6491 | web | 200 | 1 | 179.00 | TRUE | TRUE | |||||
| 29 | 13827 | 6491 | web | 194 | 2 | 149.00 | TRUE | FALSE | |||||
| 30 | 13828 | 6491 | web | 164 | 1 | 52.99 | TRUE | TRUE | |||||
| 31 | 13829 | 6492 | web | 215 | 1 | 93.99 | TRUE | TRUE | |||||
| 32 | 13830 | 6492 | web | 180 | 1 | 19.99 | TRUE | TRUE | |||||
| 33 | 13831 | 6493 | app | 110 | 2 | 179.00 | TRUE | TRUE | |||||
| 34 | 13832 | 6494 | web | 109 | 1 | 999.00 | TRUE | TRUE | |||||
| 35 | 13833 | 6494 | web | 119 | 0 | 259.00 | FALSE | TRUE | |||||
| 36 | 13834 | 6495 | app | 145 | 1 | 10.99 | TRUE | TRUE | |||||
| 37 | 13835 | 6496 | web | 178 | 1 | 70.99 | TRUE | TRUE | |||||
| 38 | |||||||||||||
| 39 |
Loading the editor…
Reference solution
Mote checks your result
Press Check. Each right cell becomes a firefly in your lantern.
Step 3 · your sheet
| A | B | C | D | E | F | G | H | I | J | K | L | M | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | entry_id | order_id | channel | product_id | quantity | unit_price | qty_ok | channel_ok | status | big_line | Allowed channels | ||
| 2 | 13800 | 6481 | app | 142 | 1 | 36.99 | TRUE | TRUE | ok | web | |||
| 3 | 13801 | 6481 | app | 172 | 2 | 18.99 | TRUE | TRUE | ok | app | |||
| 4 | 13802 | 6482 | marketplace | 168 | 4 | 149.00 | TRUE | TRUE | ok | marketplace | |||
| 5 | 13803 | 6482 | marketplace | 138 | 1 | 199.00 | TRUE | TRUE | ok | ||||
| 6 | 13804 | 6482 | marketplace | 142 | 1 | 36.99 | TRUE | TRUE | ok | Big line over | 500.00 | ||
| 7 | 13805 | 6483 | app | 150 | 1 | 18.99 | TRUE | TRUE | ok | ||||
| 8 | 13806 | 6483 | app | 216 | 1 | 379.00 | TRUE | TRUE | ok | Rows rejected | 6 | ||
| 9 | 13807 | 6484 | web | 141 | 6 | 13.99 | TRUE | TRUE | ok | ||||
| 10 | 13808 | 6484 | web | 131 | 2 | 349.00 | FALSE | TRUE | bad quantity | ||||
| 11 | 13809 | 6485 | marketplace | 178 | 1 | 70.99 | TRUE | TRUE | ok | ||||
| 12 | 13810 | 6485 | marketplace | 145 | 2 | 10.99 | TRUE | TRUE | ok | ||||
| 13 | 13811 | 6486 | app | 159 | 2 | 179.00 | TRUE | TRUE | ok | ||||
| 14 | 13812 | 6486 | app | 175 | 3 | 84.99 | TRUE | TRUE | ok | ||||
| 15 | 13813 | 6487 | app | 131 | 2 | 349.00 | TRUE | TRUE | ok | ||||
| 16 | 13814 | 6487 | app | 171 | 2 | 27.99 | TRUE | TRUE | ok | ||||
| 17 | 13815 | 6487 | app | 164 | 2 | 52.99 | TRUE | TRUE | ok | ||||
| 18 | 13816 | 6488 | phone | 122 | 1 | 29.99 | TRUE | FALSE | bad channel | ||||
| 19 | 13817 | 6489 | web | 187 | 3 | 149.00 | TRUE | TRUE | ok | ||||
| 20 | 13818 | 6489 | web | 132 | 1 | 189.00 | TRUE | TRUE | ok | ||||
| 21 | 13819 | 6490 | marketplace | 162 | 1.5 | 23.99 | FALSE | TRUE | bad quantity | ||||
| 22 | 13820 | 6490 | marketplace | 164 | 4 | 52.99 | TRUE | TRUE | ok | ||||
| 23 | 13821 | 6490 | marketplace | 186 | 1 | 20.99 | TRUE | TRUE | ok | ||||
| 24 | 13822 | 6490 | marketplace | 157 | 2 | 109.00 | TRUE | TRUE | ok | ||||
| 25 | 13823 | 6490 | marketplace | 155 | 1 | 169.00 | TRUE | TRUE | ok | ||||
| 26 | 13824 | 6491 | website | 145 | -4 | 10.99 | FALSE | FALSE | bad quantity | ||||
| 27 | 13825 | 6491 | web | 177 | 1 | 169.00 | TRUE | TRUE | ok | ||||
| 28 | 13826 | 6491 | web | 200 | 1 | 179.00 | TRUE | TRUE | ok | ||||
| 29 | 13827 | 6491 | web | 194 | 2 | 149.00 | TRUE | FALSE | bad channel | ||||
| 30 | 13828 | 6491 | web | 164 | 1 | 52.99 | TRUE | TRUE | ok | ||||
| 31 | 13829 | 6492 | web | 215 | 1 | 93.99 | TRUE | TRUE | ok | ||||
| 32 | 13830 | 6492 | web | 180 | 1 | 19.99 | TRUE | TRUE | ok | ||||
| 33 | 13831 | 6493 | app | 110 | 2 | 179.00 | TRUE | TRUE | ok | ||||
| 34 | 13832 | 6494 | web | 109 | 1 | 999.00 | TRUE | TRUE | ok | ||||
| 35 | 13833 | 6494 | web | 119 | 0 | 259.00 | FALSE | TRUE | bad quantity | ||||
| 36 | 13834 | 6495 | app | 145 | 1 | 10.99 | TRUE | TRUE | ok | ||||
| 37 | 13835 | 6496 | web | 178 | 1 | 70.99 | TRUE | TRUE | ok | ||||
| 38 | |||||||||||||
| 39 |
Loading the editor…
Reference solution
Mote checks your result
Press Check. Each right cell becomes a firefly in your lantern.
What Jennifer gets, and why
The lesson
The log and the rules
The sheet holds 36 order-entry rows from support’s correction sheet, as they were typed: entry id, order, channel, product, quantity and unit price. IT’s new form will enforce two rules, and Jennifer wants to know what they would have done to this batch before switching them on.
The inputs sit on the right: the allowed channels in K2:K4 and the “big line” threshold in L6.
Nothing in the data has been fixed. You’re finding the problems, not hiding them.
Step 1: one column per rule
In Excel, the quantity rule is Data → Data Validation → Allow: Whole number, Data: greater than, Minimum: 0. Written as a Custom rule that you can also run over old rows:
G2 =AND(ISNUMBER(E2),E2=INT(E2),E2>0)
Each part catches a different entry. ISNUMBER fails the "2" in E10, pasted in as text.
E2=INT(E2) fails the 1.5 in E21: INT(1.5) is 1. E2>0 fails the 0 in E35 and the -4 in
E26. Leave out any one of them and that row slips through.
The channel rule is Allow: List, Source: =$K$2:$K$4, which gives the cell a drop-down. Its
formula form counts the entry in the list:
H2 =COUNTIF($K$2:$K$4,C2)>0
phone in C18 and website in C26 aren’t on the list. C29 looks like web but is
"web " with a trailing space, so it doesn’t match either. In the real form, the drop-down stops
all three. Note that both the List rule and COUNTIF ignore case: Web would pass. If case
matters, use SUMPRODUCT(--EXACT($K$2:$K$4,C2))>0.
Step 2: a reason per row
I2 =IFS(NOT(G2),"bad quantity",NOT(H2),"bad channel",TRUE,"ok")
L8 =COUNTIF(I2:I37,"<>ok")
IFS returns the first reason that applies, like a form that stops at the first field that fails.
Row 26 fails both rules and reports bad quantity. L8 counts 6 rejected entries: rows 10, 21,
26 and 35 for quantity, 18 and 29 for channel.
This is also where the error messages come from. For each rule, write what the person typing should do, and put it in the rule’s Error Alert tab (Style: Stop): “Quantity must be a whole number above 0” and “Pick a channel from the list”. An Input Message (“Whole units, e.g. 2”) prevents most of these before they happen.
Step 3: the highlight rule
Lines over $500 that pass get a second look. In Excel, select A2:F37, then Conditional
Formatting → New Rule → Use a formula:
J2 =AND($I2="ok",$E2*$F2>$L$6)
The columns are locked so every cell in a row reads that row’s status, quantity and price; the rows
are free so each row reads its own. Three lines light up: row 4 (4 × 149.00 = 596.00), row 15
(2 × 349.00 = 698.00) and row 34 (999.00). Row 10 would be a fourth without the status test: the
text "2" times 349.00 is 698.00, because arithmetic converts numeric text.
Thinking like an analyst
Before switching validation on, a replay like this answers three questions:
- Are the rules right? If half the batch failed on a legitimate value (say, a quantity of 0 for a pure price correction), the rule needs changing, not the people.
- What’s already broken? Validation only checks new entries; the six rows here stay as they are unless someone fixes them. Circle Invalid Data shows them in Excel.
- What gets around it? Paste replaces validation, so a sheet that’s pasted into needs its rules backed by a check column like these, or a protected sheet.
Common mistakes
E2>0alone as the quantity rule:"2"and 1.5 both pass.- An unlocked list:
COUNTIF(K2:K4,C2)slides down toK3:K5and starts rejecting web. - Testing the channel first in
IFS, which changes the reason on row 26. - A highlight rule without
$before the columns: in Excel each cell of the row would test a different column, and the row lights up in patches.
Lantern lit!
Practised: data validationcustom validationlist validationifsconditional formattingmixed references
- Solved
- No hints
- First run
