The forgotten Google Sheets sparkline that shows wins and losses
I was building a delivery tracker for a small operation that sends out about thirty parcels a week. The brief was simple. At the end of each week, see which clients had been getting their stuff on time, and which had drifted into the “fine but technically late” category.
A pivot table was overkill. A bar chart took up too much room for what was meant to be a glanceable summary. What I wanted was a tiny indicator in each row that said “this client, last twelve weeks, on-time or late”. A status strip. Pass or fail, week by week, all in one cell.
SPARKLINE has a mode that does exactly that, and almost nobody uses it.
Three sparkline types, four if you count this one
If you’ve come across SPARKLINE before, you probably know it for the line and column variants. They give you a tiny line graph or a tiny bar chart inside a single cell, scaled to the range of values you pass in. They’re cute and they’re useful.
The fourth type is called winloss. It draws a small block per value. Positive values get an upward block, negative values get a downward block, and the height is constant. It doesn’t show magnitude. It shows direction.
For my delivery tracker, that’s exactly what I wanted. Each week the client either got their parcel on time or they didn’t. The “how much late” doesn’t matter at this altitude. Twelve weeks of on-time vs late, one cell, twelve blocks.
The formula
The syntax is the same as any SPARKLINE call, with "winloss" as the charttype:
=SPARKLINE(range, {"charttype","winloss"})
The range can be a row, a column, or any contiguous bit of data. Positive numbers draw up-blocks. Negative numbers draw down-blocks. Zeros draw nothing.
If you want the win and loss colours to be obvious, pass them in too:
=SPARKLINE(range, {"charttype","winloss"; "color","#0F9D58"; "negcolor","#DB4437"})
That gives you green for wins and red for losses, with the dashboard feel you probably want. You can leave the colours out and you get the default blue, but the colour-coded version reads better at a glance.
The trick is encoding the data
For winloss to work, your underlying data needs to be positive for wins and negative for losses. Mine wasn’t. I had a Yes or No column from the operations team that I had to translate. The cleanest fix was a helper column that turned each “Yes” into 1 and each “No” into -1.
In practice, that meant a column with =IF(B2="Yes", 1, -1) filled down, and then SPARKLINE pointing at twelve weeks of that helper column. If you’re allergic to helper columns you can do it inline with ARRAYFORMULA, but a helper column is easier to debug six months later when something breaks.
For sports tracking, the data tends to already be in the right shape. Score differential is positive for a win and negative for a loss, and you can point SPARKLINE straight at it. Same for budget vs actual, where you might track months when you stayed under budget against months when you went over.
Where I actually use winloss strips
The delivery tracker is the main one. Each client row has a winloss strip in column N showing the last twelve weeks. The trend pops out: a client whose last six blocks are all green is fine, a client whose blocks are scattered red is worth a phone call.
I also use it on a personal habit tracker for a small streak I am trying to maintain. One row per habit, one cell with a winloss strip showing the last thirty days. It’s small enough to live next to the habit name without taking over the sheet, and the visual feedback is more honest than a number.
The third use is in a tax-savings sheet where I track months I hit a target and months I didn’t. The strip lives in the summary row, and even a year of data takes up the same space as a normal cell. Compare that to twelve column charts and the case for winloss makes itself.
Things it will not do
It won’t show magnitude. If the difference between “barely late” and “very late” matters, use column instead. Winloss is for the questions that only have two answers.
It won’t handle gaps cleanly. If a value is blank or missing, the block for that period just doesn’t render, which can read as misleading if you didn’t notice the gap. I usually pad missing weeks with a zero, which leaves a tiny dead spot in the strip and lets me see at a glance that something was missing.
It won’t be your dashboard. It’s a glance, not a report. The signal it gives is “look more closely at this row”, not “here is the answer”.
A small piece of advice
The first time I added a winloss strip I made it the same colour as the rest of the sheet, which buried it. Use real green and real red. The point of the strip is that you can see it from across the room. Soft pastels defeat the purpose. Make it loud enough to actually work, and it’ll do the job a status column was probably going to do worse anyway.