Spredin

Coming from Excel

This is the same document you'll find inside Spredin under Help.

Spredin is built for Excel users moving to a Mac. Your muscle memory should mostly just work — this page maps what's identical, what moved, and what's different (usually: more powerful).

Your hands already know it#

Keyboard shortcuts (Windows → Mac)#

You pressed on Windows On the Mac What it does
Ctrl+C / X / V ⌘C / ⌘X / ⌘V copy / cut / paste (paste-special in Edit menu)
Ctrl+Z / Ctrl+Y ⌘Z / ⇧⌘Z undo / redo
Ctrl+F ⌘F find & replace
Ctrl+Arrow ⌘Arrow jump to the edge of the data block
Ctrl+Shift+Arrow ⇧⌘Arrow extend selection to the edge
Ctrl+A ⌘A select the data region
PageDown / PageUp same move one screenful down / up (⌥ for sideways)
Ctrl+PageDown / Ctrl+PageUp same, or ⌥→ / ⌥← next / previous sheet
Home same jump to column A of this row
Ctrl+Home ⌘Home jump to A1
Ctrl+End ⌘End jump to the last cell of the used range
Tab / Enter in a selection same walk inside the selected block and wrap (Tab across, Enter down)
F2 F2, double-click, or just start typing edit the active cell (Enter moves down, as in Excel)
Alt menu keys ⌘K the command palette — type what you want ("merge", "freeze", "pivot")

Most Mac keyboards have no Page keys — PageDown is fn+↓ and PageUp is fn+↑, so switching sheets is ⌃fn↓. That is why Excel for Mac also binds ⌥→ / ⌥←, and so do we: on a laptop it is the one worth learning.

The fastest way to find anything: ⌘K and type a word. Every menu action is in the palette — including the ones that used to be menu-only (data validation, define name, insert comment, paste special, clear formats, split cell). The menu bar itself is reachable by Tab and Enter as well.

Where things live#

In Excel In Spredin
Home → formatting The format toolbar (bold/borders/fills/number formats)
Data → Sort / Filter / Remove duplicates Data menu (multi-key sort, AutoFilter, dedupe)
Insert → PivotTable Data → Pivot table… (output goes to a new sheet)
Insert → Chart Insert → Chart from selection — then ⚙ on the chart card for detailed options
View → Freeze Panes Rows/Cols → Freeze (from selection / top row / first column)
Formulas → Trace Precedents ⌘-click (or ⌘-right-click) a cell — precedents blue, dependents orange
Review → New Comment Right-click → Comment (hover shows it)
Conditional Formatting Data → Conditional formatting… (rules, color scales, data bars)
Text to Columns Right-click → Split text to columns
Data → Get Data / Power Query Tools → Python panel — see the honest note below
Data → Power Pivot / Data Model not available — see below
Data → From Database Data → Connect to database… — PostgreSQL, MySQL/MariaDB, SQLite. Read-only: Spredin runs a single SELECT/WITH and imports the result. It cannot write to your database, by design. A SQLite connection names a file, so Spredin asks before opening it, showing the path

Opening your Excel files#

File → Open a .xlsx: every sheet arrives with values, formulas, number formats, cell styling, merged cells, column/row sizes, frozen panes and comments. Modern functions come through cleanly — Excel stores XLOOKUP/IFS/CONCAT/… with an internal _xlfn. marker and sometimes an @ operator; Spredin strips both so =XLOOKUP(…) evaluates immediately. A function Spredin doesn't have yet shows a clear #NAME? (not a silent wrong number). Over 250 functions are supported — nearly all of the ones Microsoft lists as most commonly used, the main gap being the newest dynamic-array ones (see below).

We check the formula engine by opening real Excel workbooks and comparing every formula against the result Excel itself last computed and saved in the file. It is an ongoing process rather than a finished one, and it is how most of the differences that remain get found.

Excel charts don't import — rebuild them with Spredin's own. Pivot tables do: each is rebuilt as a live Spredin pivot on its own sheet, ready to edit. Macros never run (by design; see below). Full fidelity matrix: Help → File formats.

Saving: keep working files in .sprd (Spredin's open, human-readable format — preserves everything, gzipped inside so it is ~80% smaller). File → Export writes styled, multi-sheet .xlsx back for your Excel colleagues.

VBA → Python#

Spredin's automation language is Python (the Tools → Python panel), not VBA:

Your .xlsm macros do not run — Spredin never executes anything inside an opened file (a security feature, not a gap).

Same as Excel, and worth knowing#

Sorting a range that contains merged cells is refused. The status bar names the merge, so you know which one. Unmerge it, sort, then merge again.

Excel refuses this too, for the same reason. Sorting moves the values, but a merge is a fixed rectangle that stays where it is — so afterwards the merged label would sit over rows it never described, and the value hidden underneath would be invisible, because a merge only ever shows its top-left cell. You would have no way to see that it had happened. A script gets the same protection: sheet.sort(...) stops and tells you, rather than quietly rearranging the data.

Different on purpose#

Not there yet (honesty section)#

Kept deliberately blunt, because finding these out mid-task is worse than reading them here. Everything below is verified against the current build.

No workaround exists today:

Round-trip caveat — smaller again. .xlsx export now carries values, formulas (with their last computed result, so a reader without a formula engine still sees the right numbers), cell styling, merged cells, frozen panes, column widths / row heights, comments, defined names, hidden sheets and data validation rules. One thing import reads but export still drops: conditional formatting (exported as plain fills, not live rules). Excel charts never import at all. If a workbook's colour rules matter, keep the .sprd file as your master copy.

Power Query and Power Pivot have no equivalent — Python is the answer, and it is a different shape. Worth reading properly, because these are the two names people ask about first.

Missing features: hyperlinks, cell/sheet protection, Goal Seek and the rest of what-if, subtotal outlines, Flash Fill, rich text runs inside one cell, per-side borders, and Excel-chart import. Sheet tabs can't be dragged to reorder or duplicated yet.

One that needs a sentence rather than a bullet — dynamic arrays. The functions are all there: FILTER, UNIQUE, SORT, SORTBY, SEQUENCE, TRANSPOSE, LINEST, TREND. What is not there yet is spilling — a multi-cell result filling the cells below and to the right on its own. Use them the pre-365 way, wrapped in something that consumes an array: =SUM(FILTER(C:C,B:B="East")), =INDEX(SORT(A2:B99,2),1,1). A bare =UNIQUE(A:A) in one cell shows its first element rather than spilling. Structured table references (Table1[[#This Row],[Amount]]) do work, and import correctly from .xlsx; what is missing is the Ctrl+T command to create a table in Spredin.

Filling a long column without dragging#

The Excel habit works here, in two keystrokes and no mouse:

  1. Type the formula in the first row of the column (or the last — see below).
  2. ⌘⇧↓ — extends the selection to the bottom of the data block in one press. (⌘⇧↑ goes the other way; ⌘↓ without Shift just jumps there.)
  3. ⌘D — Fill Down. The formula is copied over the whole selection with its references shifted per row.

If the formula is on the last row instead, select upward with ⌘⇧↑ and press ⌘⇧D for Fill Up. Excel has Fill Up in Home → Fill but gives it no shortcut at all (the chord is Alt+H,F,I,U); ⇧ over the fill key is ours. ⌘R and ⌘⇧R are Fill Right and Fill Left. All four are in Edit → Fill too.

Double-clicking the fill handle still works, and still stops at the neighbouring column's last row.

$ anchors: ⌘T (not F4 — macOS takes that key)#

While editing a formula — in the cell or in the formula bar — put the caret on a reference and press ⌘T to cycle A1$A$1A$1$A1A1.

Use ⌘T, not F4. This is the one place your Windows muscle memory can't follow you, and it isn't Spredin's doing: by default macOS gives the top row to the hardware functions, so pressing F4 fires Spotlight/Launchpad and the key never reaches any app. Excel for Mac hit the same wall and binds ⌘T — we use the same chord, so anything written for Excel-on-Mac applies here.

If you want F4 itself, either press fn+F4, or turn on System Settings → Keyboard → "Use F1, F2, etc. keys as standard function keys". Both work. Ctrl+T also works everywhere and is the one to use in the browser version, where the browser keeps ⌘T for opening a tab.

Two things it does that save real time: the caret anywhere inside B2:D50 anchors both ends together, and selecting a stretch of the formula anchors every reference in it at once. Text inside quotes is left alone, so a label like "Q1" never gets mangled.

Keyboard gaps. Still unbound: Ctrl+;, Ctrl+1, Ctrl+P, F9.

One platform note, and it has a workaround now: cancel a cell edit with ⌘. Not Escape. On the Mac desktop build the webview swallows Escape completely — it never reaches the app at all, so a typed-over formula left you stuck in an open editor with the replacement still in it. ⌘. (macOS's own cancel chord) is bound to Edit → Cancel cell edit and discards the edit properly. Escape still works in the browser build. If you do commit something by mistake, ⌘Z undoes it.

Already shipped (this list used to say otherwise): named ranges, data validation dropdowns, dynamic pivot tables, conditional formatting, AutoFilter with conditions, freeze panes, multi-key sort, paste-special, and over 250 functions.

Numbers too wide for their column show #####, as in Excel — widen the column or reduce the decimals to see the value. Spredin will never show you part of a number.

A formula that returns several values shows the first one, with a corner mark. =UNIQUE(A1:A9) puts the first unique value in the cell and flags it, because spilling into the neighbouring cells is not implemented yet. That matches what Excel's own anchor cell holds; what is missing is the rest. Use them wrapped — =SUM(FILTER(…)), =INDEX(SORT(…),1,1), =COUNTA(UNIQUE(…)).

All of these are tracked — tell us which one blocks you, via Help → Send feedback.