Build it as a movements ledger, not a stock list
The mistake that causes most inventory spreadsheet failures is storing the current quantity as a typed number. Someone overtypes it during a count, and from that moment the file cannot be reconciled against reality.
Record events instead. One row per receipt, issue or adjustment, each with a date, SKU, quantity and reason. Current stock is then a calculation, and it is always reconstructable:
=SUMIFS(Movements[Qty], Movements[SKU], [@SKU])
Reorder status becomes a comparison against a per-SKU threshold rather than a manual flag:
=IF([@OnHand] <= [@ReorderPoint], "REORDER", "OK")
And the reorder point itself should be derived, not guessed — average daily usage times lead time, plus a safety buffer:
=ROUNDUP(AVERAGE(DailyUsage) * LeadTimeDays * 1.2, 0)
Our inventory management template and warehouse stock template are both built this way.