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#
- Fill handle — drag the little square at the selection's corner to extend a
series (
1, 2 → 3, 4…,Q1 → Q2,Jan → Feb, formulas shift refs like Excel). A date steps a day, a time an hour; dates a month or a year apart continue by month or year;Q4is followed byQ1and1stby2nd. A lone number is copied — hold ⌥ to count up from it instead (⌥ also copies what would otherwise be a series). The filled cells take the source's format. Double-click it to fill down to the neighbour column's extent; it stops above anything already in its own column, unless the cell right below is filled (then it re-fills that column). - Type-to-replace, F2-style editing (Enter/Tab commit and move; ⌘.
cancels — see the note on Escape below). While you type a new entry an
arrow key commits it and moves that way, so a row of figures is
5 → 6 → 7; after F2, a double-click or a click in the text the arrows move the caret instead, and in a formula that is waiting for a reference they point at cells. - Formulas —
=SUM(B2:B9),$A$1absolutes, cross-sheetSheet2!A1,'My Sheet'!A1:C9, a total across sheets=SUM(Jan:Dec!B5), and sheet names in any language without quotes (=データ!A1), as Excel writes them. Errors are the same tokens (#DIV/0!,#N/A,#VALUE!…). - Point mode, across sheets — start typing
=SUM(, then click another sheet's tab and drag over its cells: the reference (Sheet2!A1:A2) appears in the formula as you select, and Enter finishes the formula back on the cell you started from (⌘. abandons it). Unbalanced(is auto-closed on commit, like Excel. - Dates — type
2024-01-15or1/15/2024(15/01/2024on a Mac whose region reads dates day-first, as Excel does) and it becomes a real date (serial number + date format, like Excel):=A1+30, sorting and charts all work.3/4/25,5-Mar-2025,5 Mar 2025andMarch 5, 2025are dates too, and9:30 PM,14:30and25:00(25 hours) are times; each shows as you typed it, and a cell that already has a date format keeps it.Mar 2025,5-Marand1/2stay text — unlike Excel, which makes dates of them. - Percentages — in a cell formatted as a percentage, typing
25gives 25% (and0.25gives 25% too), as in Excel. The cell edits as25%. A number typed into a cell that already has a number, currency or percentage format keeps that format. #N/Afor a missing figure — type#N/A(or=NA()) and the cell holds the error, as in Excel: a total over it shows#N/Ainstead of coming out short,IFERRORandISNAsee it, and a chart leaves a gap. The same goes for#DIV/0!,#VALUE!,#REF!,#NAME?,#NUM!and#NULL!, typed or in a file you open.- Text on purpose — a leading apostrophe makes what follows text, as in
Excel:
'007,'=not a formula,'1/2. The cell shows it without the apostrophe; the formula bar keeps it. In front of an ordinary word ('tis) it is just an apostrophe. - Merge, freeze panes, filters, sort, find & replace, pivot tables, conditional formatting, comments, number formats — all present (see the menus below).
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). A paste starts at the top-left of the selection; one copied cell fills a selected range. Cut and paste moves the cells, as in Excel: they stay, outlined, until you paste (⌘. cancels), the formulas that read them follow, and the moved formulas keep their references; their dropdowns and conditional formats move with them, and so do chart ranges on the same sheet. It moves to another sheet of the workbook too. A formula that read a cell the paste wrote over shows #REF!. Pasted in another window a cut is a copy whose source is emptied |
Ctrl+Z / Ctrl+Y |
⌘Z / ⇧⌘Z |
undo / redo. The cells it changed are selected and scrolled into view, on whichever sheet they are |
Ctrl+B / I / U |
⌘B / ⌘I / ⌘U |
bold / italic / underline the selection, on or off |
Alt+Enter |
⌥Return |
a line break inside the cell you are typing in; the cell wraps and the row grows to show it, as in Excel |
Shift+Space / Ctrl+Space |
⇧Space / ⌃Space |
select the whole row / the whole column (if your Mac uses ⌃Space to switch input sources, click the column's header instead) |
Ctrl+F / Ctrl+H |
⌘F |
find & replace — Next, Previous, Replace, Replace all; this sheet or the whole workbook. Find looks at what cells show; Replace also changes formulas, as Excel's does, and *, ? and ~ are Excel's wildcards |
Ctrl+S / F12 |
⌘S / ⇧⌘S |
save / Save As — pick Spredin Workbook or Excel (.xlsx) in the File Format menu (with AutoSave on, Save a Copy…) |
Ctrl+P |
⌘P |
Print — page setup and a live preview, then the Mac print panel or Save as PDF… |
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 table around the active cell; press it again (or click the box where the headers meet) for the whole sheet. ⌘-click a header to add a column or row to the selection |
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). The active cell is where the selection started, so what you type fills the block in order; with several ⌘-clicked areas the walk goes on into the next one |
Tab, Tab, … then Enter |
same | type across a row with Tab, press Enter, and the next row starts back in the column where you began, as in Excel — so a table typed row by row stays in its columns |
F2 |
F2, ⌃U, double-click, or just start typing |
edit the active cell (Enter moves down, as in Excel) |
Ctrl+Enter |
⌘Return or ⌃Return |
put what you typed in every selected cell and stay there — a formula's references follow each cell, as a fill does. With one cell selected it enters and stays on the cell |
Alt+= (AutoSum) |
⇧⌘T |
AutoSum — a total of the numbers above (or to the left); on a selected block, a total under each column; on a selected row or column of empty cells, a total in each |
Alt menu keys |
⌘K |
the command palette — type what you want ("merge", "freeze", "pivot") |
Most Mac keyboards have no Page keys —
PageDownisfn+↓andPageUpisfn+↑, 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 — Settings and Help included (a theme is "Theme: Fjord"). The menu row in the window is reachable by Tab and Enter as well. The Mac menu bar at the top of the screen holds the same menus (File, Edit, Insert, Format, Data, Rows/Cols, Tools, Settings, Help), so the search box in its Help menu finds every command too.
Where things live#
| In Excel | In Spredin |
|---|---|
| Home → formatting | The format toolbar (bold/borders/fills/number formats) |
| Home → Number Format box, Format Cells → Number | The toolbar's format box or Format Cells (⌘1): Short date, 14-Mar-25, Mar-25, long date, 1:30 PM, duration, currencies, percent. Custom… in the toolbar's box takes any Excel code |
| Data → Sort / Filter / Remove duplicates | Data menu (multi-key sort, AutoFilter, dedupe) |
| Insert → PivotTable | Insert → Pivot Table… (output goes to a new sheet) |
| PivotTable Analyze → Refresh | The refresh button beside the pivot (next to PivotTable Fields), or right-click a pivot cell → Refresh Pivot Table. As in Excel, a pivot does not follow its source until you refresh it. |
| Insert → Chart | Insert → Chart from Selection — then ⚙ on the chart card for detailed options |
| View → Freeze Panes | Rows/Cols → Freeze Panes / Freeze Top Row / Freeze First Column |
| View → Gridlines | Rows/Cols → Gridlines (a tick while shown), per sheet. A file saved with gridlines off opens with them off |
| File → Print / Page Layout | File → Print… (⌘P) — page setup and preview in one dialog; File → Export as PDF… |
| Formulas → Trace Precedents | ⌘-right-click a cell — precedents blue, dependents orange (⌘-click adds a cell to the selection, as in Excel) |
| Review → New Comment | Insert → Comment on Cell…, or right-click → Comment on Cell… (hover shows it) |
| Conditional Formatting | Format → Conditional Formatting… (rules, color scales, data bars; the dialog lists the sheet's rules, and each can be changed or removed) |
| Right-click a sheet tab → Hide / Unhide | The same: right-click a sheet tab → Hide Sheet, and that menu lists Unhide Sheet: name for each hidden sheet; also Insert → Hide Sheet and Insert → Unhide Sheet. A hidden sheet has no tab, ⌥→ and Ctrl+Page Down step over it, and its cells still count in formulas. A workbook keeps at least one visible sheet |
| Text to Columns | Format → Split Cell by Symbol… (also on the right-click menu). The parts are entered as if typed, so dates and amounts come out as dates and numbers, and it asks before replacing anything already in the cells to the right |
| Data → Get Data / Power Query | Tools → Show 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: the connection itself is opened read-only, and Spredin runs a single SELECT/WITH and imports the result; a result cut at the row limit says so. It cannot write to your database, by design. Encrypted: write sslmode and sslrootcert in the connection string (MySQL: ssl-mode, ssl-ca), or choose your company's certificate with CA certificate…; Test connection says whether the connection is encrypted, and the server's certificate is always checked. A database on your own Mac connects as before. 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/_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 330 functions are
supported — nearly all of the ones Microsoft lists as most commonly used, LAMBDA
and the array-shaping ones (TAKE, DROP, VSTACK…) included. What is missing is
spilling (see below) and a few of the newest, such as GROUPBY, PIVOTBY and the
REGEX functions. A sheet too large to open is named when the workbook opens and
the rest of it opens; Spredin then will not save over that file, which would
lose the sheet — use Save As.
Help → Formula Reference explains every function in plain words: what it is for, how Spredin works it out, how that compares with Excel, the errors it gives and when, and a worked example. Spredin Pro also draws each example as mathematics, and its Formula Preview setting shows the selected cell's formula under the formula bar typeset the same way, with a plain line for each function it names.
The status line after opening says what needs a second look. It counts the spilling formulas (Excel 365): each shows only its first value, and the cells it spilled into keep Excel's last results and do not recalculate. It also counts the data-validation rules that use a formula: they are kept, and saved back to Excel, but Spredin does not check entries against them.
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 open as Spredin charts, drawn from the same cells; a small
Excel badge on each says what Spredin draws differently, and a kind it
cannot draw (a map, a 3-D surface) shows as a placeholder. Until you change a
chart here, saving as Excel writes it back exactly as it was — along with the
pictures, shapes, pivot tables and links Spredin keeps but does not show.
Pivot tables are also rebuilt as live Spredin pivots on their own sheets,
ready to edit — the file keeps both. A chart sheet (an Excel tab that is
only a chart) opens as a sheet holding that chart and is saved back as a chart
sheet. Anything in the file Spredin can neither show nor keep is named in the
save question before the .xlsx is written — never dropped silently.
Macros never run (by design; see below). Full fidelity matrix:
Help → File Formats & Fidelity.
Saving: keep working files in .sprd (Spredin's open, human-readable format —
preserves everything, unless you turn off Settings → Keep Excel Content in
Spredin Files, and gzipped inside so it is much smaller). With Keep Excel
Content in Spredin Files off, a .sprd leaves out the Excel file's pictures
and shapes, its original pivot tables and its charts as Excel drew them, for a
smaller file; saving it as Excel later names what is missing. File → Export Workbook as Excel…
writes a styled, multi-sheet .xlsx copy for your Excel colleagues; Save As…
with Excel Workbook as the format makes the .xlsx the file you work in.
A workbook you opened from an Excel file is offered back as Excel the first
time you press ⌘S; anything Excel cannot hold is listed before it is written.
In LITE a Spredin Workbook has a size limit. A workbook that nears it (a great
deal of formatting, or of cell contents) is flagged in time, saying which; one
past it is not written over your file, and Save as Excel… is offered instead.
VBA → Python#
Spredin's automation language is Python (the Tools → Show Python Panel), not VBA:
- The
sheetAPI is pandas-friendly:df = sheet.read('A1:F100'),sheet.write(df2, 'H1'),sheet.chart('A1:C10', 'bar', title='Sales'), cross-sheet viasheet.book('Sheet2'). import pandas,numpyandscipywork out of the box — they ship inside the app, so no download and no internet. Charts come fromsheet.chart(...), Spredin's own chart engine, rather than matplotlib.ActiveSheet.PageSetupand.PrintOut/.ExportAsFixedFormathave their counterparts:sheet.page_setup(orientation='landscape', fit=(1, 0)),await sheet.print_out()andawait sheet.export_pdf(path)— the same setup and pages as File → Print….- Ask in plain English, in the panel, writes scripts from a plain-English prompt — it knows this API. Editor has autocomplete, hover help and lint. With a service on the internet, Spredin asks before it sends anything from the workbook (Help → Choosing an AI Model).
- Reference: Help → Python Scripting Guide and Agent / API Reference.
Your .xlsm macros do not run — Spredin never executes anything inside an
opened file (a security feature, not a gap). They are kept, though: save
the workbook as an Excel Macro-Enabled Workbook (.xlsm) and they are back
in the file for Excel to run, with the sheet and workbook names their code
uses.
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#
- Errors explain themselves — hover an error cell:
#N/A — VLOOKUP did not find "acme-x" in the table's first column.The cell still shows the canonical token, soIFERROR/ISNAbehave exactly like Excel. - XLOOKUP, SUMIFS, IFS, TEXTJOIN, LET, FILTER, UNIQUE, SORT, SEQUENCE,
SUBTOTAL, AGGREGATE are covered, plus finance (XIRR, XNPV, IRR, MIRR, NPER,
RATE), statistics down to the legacy names (TDIST, TINV, CHIDIST…) and the
matrix set (MMULT, MINVERSE, TRANSPOSE, LINEST, TREND). LAMBDA works with
MAP, REDUCE, SCAN, BYROW, BYCOL and MAKEARRAY, inside LET
(
=LET(double,LAMBDA(x,x*2),double(5))), and saved under a defined name, as Excel's Name Manager makes them (DOUBLE=LAMBDA(x,x*2), then=DOUBLE(5)). Not yet: a LAMBDA that calls itself (it shows#CALC!and says why) and calling one directly (=LAMBDA(x,x*2)(5)). Full list: type=and browse the autocomplete. - Charts are ECharts-powered — 19 types, editable via the ⚙ panel, and an "Advanced (ECharts JSON)" escape hatch for anything the UI doesn't expose.
- The file format is open —
.sprdis documented JSON you can read, diff and generate. - Codes and IDs stay as you typed them.
SEPT2staysSEPT2,007keeps its leading zeros, and a 19-digit account number keeps every digit; a lookup finds each one on its own row. Excel turns the first into a date, drops the zeros from the second and rounds the third away into scientific notation — the single most-criticised thing about it.COUNTIF,SUMIFand the-IFSfunctions, though, match a code by its number, as Excel does:COUNTIF(A2:A8,"007")counts a7in the range too. Currency, percentages, thousands separators and unambiguous dates are still converted, on typing, pasting and CSV import alike. See Help → File Formats & Fidelity. - Text that is a number counts as one. A cell that arrives from a file as
text but holds a number — an ID or an amount exported by another system —
adds up in
SUMand is found byVLOOKUP. Excel leaves it out of the total and does not match it, which is behind many "why is my formula wrong" questions. What you mark as text stays text: a leading apostrophe ('12), leading zeros (0057) and numbers longer than 15 digits. - A total over a linked workbook works while that workbook is closed.
SUMIFandCOUNTIFover a link show#VALUE!in Excel until the other file is opened. Spredin answers from the values the file keeps with the link. - It tells you why a workbook is slow. Tools → Workbook Health… reports used ranges stretched by a stray cell, volatile formulas, conditional formats covering millions of cells, formatting far in excess of the data, and every formula that evaluates to an error — with the number, the sheet, an example address and what to do about each. Excel's answer to "why is this slow" is a support article telling you to change your workbook; this tells you which part.
- Past Excel's size limits. Rows grow as you go down — ↓, Page Down, the
name box and the scroll bar all carry on past row 100,000 to row 4,194,304,
four times Excel's 1,048,576 — and a file with more rows than that opens with
every row reachable. ⌘↓ on an empty column lands on row 1,048,576, as it does
in Excel. Columns reach
ZZZZ— 475,254 of them, against Excel's 16,384. Undo is 200 steps, not 100, and running a Python script does not wipe the undo stack the way a VBA macro does. Deleting a sheet does clear it, as in Excel; the question before you delete one that holds anything says so.
Printing and PDF#
⌘P (or File → Print…) opens Excel's Print screen in one dialog: what to
print (the sheet, the selection or the whole workbook), pages from–to,
paper, orientation, scaling (actual size, Fit all columns on one page, fit
the sheet on one page, or Custom — a percentage or W × T pages, with the
percent Fit worked out shown), margins, gridlines, row and column headings,
centring, and under Print area, titles, header & footer the print area
(A1:F40, or whole columns A:F), rows to repeat at the top, columns to
repeat at the left, header and footer (presets, or Custom… with left,
centre and right parts in Excel's codes — &P page, &N pages, &D date,
&F file, &A sheet), and page order. The page on the right is the actual
print, page by page. Print… hands it to the Mac print panel (printers,
copies) and prints at true size, margins measured from the paper's edge;
Save as PDF… writes the file. File → Export as PDF… opens the same dialog.
Cancelling either panel brings you back to the dialog with your choices kept.
Selecting whole columns and printing the selection prints the rows that have
something in them, as Excel does. Printing the entire workbook, what you
change in the dialog (a footer, landscape, fit to one page wide…) applies to
every sheet in it — in Excel only the active sheet unless the sheets are
grouped; each sheet keeps its own print area and titles.
Things that work the way Excel does: gridlines are off unless you tick them
(cell borders always print), the settings belong to the sheet and are saved
with it, and a workbook made in Excel keeps its print area, print titles,
margins, scaling, headers and footers, page breaks and paper — on open and
when saved back to .xlsx. Undo (⌘Z) takes back a page setup change.
Also as in Excel: text too long for its cell runs on over the empty cells
beside it, on paper as on screen (a number never does — it shows #####).
Different: headers and footers print in the sheet's font at 9 pt rather than taking Excel's font codes; charts print as pictures.
Saving: ⌘S, or AutoSave#
Your hands' habit works: ⌘S saves, and closing a window with unsaved work asks Save / Don't Save / Cancel. If you would rather not think about it, turn on AutoSave — the switch in the title bar, as in Excel. It is off unless you turn it on: in Excel, a workbook on your own disk never saved itself either.
- What it does. A few seconds after you stop typing, the workbook is written to its own file. The title bar says Saving…, then Saved. Undo is not affected — ⌘Z works across saves for as long as the window is open.
- Each workbook remembers its own switch, inside the file. Settings → AutoSave & Versions… has the same switch, and the default for workbooks that have not chosen.
- It needs a Spredin Workbook (
.sprd) on disk. A new workbook turns it on with its first save; an Excel file is offered Save as Spredin Workbook…, because writing.xlsxcannot hold everything (Python scripts, for one). - While it is on, Save As is Save a Copy (Excel does the same): the copy is written, and you keep working in the original. Closing the window or quitting does not ask — anything waiting is written first. If a save fails, the title bar says Couldn't save (hover for why, click to try again) and closing asks as usual.
- It never writes over someone else's change. If the file is changed by another app or another Mac (iCloud, Dropbox) while it is open, AutoSave pauses and the next save asks what to keep.
- It pauses, and says so, while a large sheet is still loading, and on a workbook big enough that a save would freeze typing (well over a million cells changed since the last save) — ⌘S still saves — and on a workbook too large to save as a Spredin Workbook in LITE, where it says to save it as Excel.
Earlier versions are kept, so a save is never the end of the road — the way Pages and Numbers do it. File → Revert To → Last Opened puts the workbook back the way it was when you opened it; Browse Versions… lists what Spredin kept (everything from the last hour, one an hour for a day, one a day for 30 days), shows how each differs from the workbook now, and restores one — or opens it as a copy beside your work. Restoring asks first and keeps what is there now as a version, so a restore can itself be undone from the same list. Versions stay on your Mac. Settings → AutoSave & Versions… is where you delete them, choose how much is kept (200 MB per workbook and 2 GB in all unless you change it) and choose the folder they are kept in.
Crash recovery still runs for anything not yet in its file: every 20 seconds it keeps a snapshot of unsaved work and offers it back at the next launch.
Not there yet (honesty section)#
Kept deliberately blunt, because finding these out mid-task is worse than reading them here.
Limits worth knowing:
- Crash recovery has a size limit. Crash-recovery snapshots are compressed, and what counts is the size of the compressed snapshot: an ordinary table of names, dates and amounts is covered up to about 300,000 cells, a sheet of repetitive numbers up to 1,000,000. Past that the status bar says No crash recovery for as long as that is true (and AutoSave is not keeping the file current) rather than letting you assume you are covered. Save often, or turn AutoSave on.
Round-trip caveat. .xlsx export 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, data validation rules and
conditional formatting, written as Excel's own live rules. Opening an
.xlsx reads the rules Spredin draws the same way (greater than, between, text
contains, top/bottom N, duplicates, two-colour scales, data bars); the others
are named when you save as Excel. Charts go both ways: an
Excel chart opens here and, unchanged, is written back as it was; a chart made
here becomes an Excel chart (or a picture, for the kinds Excel has no chart
for — saving says which). 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.
- If you are on Excel for Mac today, you do not have Power Pivot either — Microsoft has never shipped the Data Model on the Mac, and Power Query's interface there is partial.
- What Python replaces well: every transformation Power Query performs — filter, merge with any join type, append, unpivot, group, split, fill down, remove duplicates, change type — usually in less typing, over pandas, with the whole of Python available when a step needs real logic. Plus our read-only database connector for the "get data" half.
- What it does NOT replace, honestly:
- A refreshable pipeline. Power Query saves its steps in the workbook and
re-runs them when you press Refresh. Our scripts are saved in the
.sprdfile, but nothing yet records which sheet came from which script, and nothing re-runs it for you. - A step list you can audit. Power Query shows named steps you can click, reorder and edit in the middle. A script is a script.
- Measures with filter context — Power Pivot's genuinely different idea,
where one definition (
Total Sales) answers every question you drag it into. In Python you write the aggregation per question.
- A refreshable pipeline. Power Query saves its steps in the workbook and
re-runs them when you press Refresh. Our scripts are saved in the
Missing features: clickable hyperlinks (HYPERLINK() shows its text, and
links in an Excel file are kept), cell/sheet protection, Goal Seek and the rest
of what-if, subtotal outlines, Flash Fill, rich text runs inside one cell,
and per-side borders. Sheet tabs can't be dragged to reorder,
duplicated or given a colour yet (a tab colour from an Excel file shows). There is no Format Painter button: copy the cell, select
where the format should go and choose Edit → Paste Formats. (Clearing
formats is Format → Clear Formats; Delete clears contents only, as in Excel.)
One that needs a sentence rather than a bullet — dynamic arrays. The
common functions are there: FILTER, UNIQUE, SORT, SORTBY, SEQUENCE,
TRANSPOSE, TAKE, DROP, VSTACK, HSTACK, TEXTSPLIT, LINEST, TREND,
and LAMBDA with MAP, BYROW, BYCOL, REDUCE and SCAN. 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. In a
workbook from Excel 365, a formula that spilled shows its first value, and the
cells it spilled into keep the results Excel last saved: they do not
recalculate when the inputs change. The status line says how many such
formulas a file has when it opens.
Structured table references (Table1[[#This Row],[Amount]]) do work, and
import correctly from .xlsx; a table's name alone is its data too (=SUM(Sales),
=ROWS(Sales), a lookup into Sales); what is missing is the Ctrl+T command to create a
table in Spredin. A table follows its sheet as it does in Excel: rows and
columns inserted or deleted above, inside or left of it move or resize it (a
column inserted inside it becomes Column1), and it stays with a renamed
sheet. A row typed directly below a table does not join it; insert a row
inside the table instead. Typing over a header renames the column, and every
Table1[Old] in the workbook follows it; a cleared header becomes Column1,
and a name another column already has gets a number (Qty2), as in Excel.
Filling a long column without dragging#
The Excel habit works here, in two keystrokes and no mouse:
- Type the formula in the first row of the column (or the last — see below).
- ⌘⇧↓ — extends the selection to the bottom of the data block in one press. (⌘⇧↑ goes the other way; ⌘↓ without Shift just jumps there.)
- ⌘D — Fill Down. The formula is copied over the whole selection with its
references shifted per row. Fill Down always copies — value and format,
never a series — so
007, a long ID and a date arrive as they are.
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 the Edit menu too.
Double-clicking the fill handle still works, and still stops at the neighbouring column's last row.
Formulas it suggests as you type#
Type = under a column of numbers and a short list opens under the cell:
=SUM(B2:B13), then AVERAGE, COUNT, MAX and MIN of the same cells, with
the range outlined on the sheet. ↑↓ choose, Tab (or a click) takes the
one chosen; anything else you type carries on as normal. Nothing is ever
inserted by itself, and Enter commits only what you typed. An arrow past the
top or bottom of the list closes it and points at a cell, as it always did —
so = then ↑ still means "the cell above".
- A total (Excel's AutoSum rule): the numbers above, else to the left. A row label or column header saying Average, Count, Max or Min (in any of the app's languages) puts that function first.
- The formula above, for this row — when the two cells above hold the same formula, as a fill would have written it.
- A lookup filled in for you: type
=VLOOKUP((or=XLOOKUP(,=SUMIF(,=COUNTIF(,=AVERAGEIF() in a column headed Price, and Spredin finds the table — on any sheet — that holds this row’s codes, and its Price column:=VLOOKUP($A2,Prices!$A$2:$C$200,3,FALSE), anchored so it fills down. It works from the first row (one code is enough when it is text). Up to three tables are offered when more than one holds the codes; a table you selected a moment ago is offered too. If no header matches, it fills the key and the table and leaves the column to you. - A lookup with nothing typed but
=: in that same Price column, a bare=offers the whole formula,=XLOOKUP($A2,Prices!$A$2:$A$200,Prices!$C$2:$C$200)first and theVLOOKUPafter it. This one needs more to go on, since you did not ask for a lookup: a table with a column of the same name, and this row's code among its keys. A total row gets its SUM, not a lookup. - The rest of a lookup after its key: type or point at the key first,
=XLOOKUP(A2,or=VLOOKUP(A2,, and the table and column are offered for that key. - The range you just selected: select a column with ⇧⌘↓, then type
=SUM(in another cell (on any sheet) — that range is the suggestion. A2:to the end of the data — what ⇧⌘↓ would have selected.
⌥Tab also steps to the next. The function list wins: while it is open, Tab picks the function. Turn suggestions off with Settings → Suggest Formulas as I Type; ⇧⌘T (AutoSum) works either way.
$ 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$1 → A$1 → $A1 → A1.
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 works too.
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.
It works without opening the cell, too: select a cell holding a formula and
press ⌘T, and every reference in that formula changes at once. Select a
range (a filled-down column, say) and press it: every formula in the selection
moves to the same form — all $A$1, then all A$1, and so on — each keeping
its own references.
Typing with an input method (Chinese, Japanese, Korean, or an accent typed as two
keys). Open the cell first — double-click it, or press F2 or ⌃U — and type: the
text composes in the cell, and the input method's own keys (Enter or Space to take a
candidate, the arrows, Escape) stay its own until the text is in. The same holds in
the formula bar and the name box. Typing straight onto a cell that is only selected
works the same way: the input method takes the first key, and the cell opens on
what it composes.
Keyboard gaps. Still unbound: Ctrl+; (today's date). F9 is Calculate
Now (also Data → Calculate Now); Excel for Mac's other chord for it, ⌘=, is Zoom
In here. ⌘1 opens Format Cells and ⌘P prints.
TODAY, NOW and RAND recalculate as in Excel. Every edit works out RAND, RANDBETWEEN, RANDARRAY and NOW again, and what reads them; TODAY when the date has moved, and a workbook left open past midnight moves to the new date within a minute on its own. Calculate Now takes them all. Unlike Excel, this does not mark the workbook as changed.
Escape cancels a cell edit, as in Excel: the cell keeps what it held. Over a list under the editor (the function list, the formula suggestions) the first Escape closes the list and the second cancels the edit. ⌘. (macOS's own cancel chord, Edit → Cancel Cell Edit) does the same. If you do commit something by mistake, ⌘Z undoes it.
Already there, in case you were wondering: named ranges, data validation dropdowns, dynamic pivot tables, conditional formatting, AutoFilter with conditions, freeze panes, multi-key sort, paste-special, and over 330 functions.
Names are Excel's names (Insert → Define Name…). A name can be a cell or
a range, a whole column or row (Data!$A:$A), several areas
(A1:A5,C1:C5, for SUM, COUNT, AVERAGE, MIN, MAX and the like), a
constant (0.2, 20%, "Q1 actuals", a date) or a formula
(=OFFSET(Data!$A$1,0,0,COUNTA(Data!$A:$A),1)). The dialog lists the names
the workbook has: click one to load it and Update what it refers to, or
Remove it. One bare word needs its = to mean another name (=Revenue).
A name that belongs to one sheet in an Excel file works as it does there: each
sheet's formulas read their own rate, and =Costs!rate reads another sheet's.
A name made here remembers the sheet it was made on (B2:E5 typed on Data is
Data!$B$2:$E$5) and moves with its rows.
Numbers too wide for their column behave as in Excel. One in General
format shows fewer decimals (0.509506) or a short scientific form
(1.23457E+14); one with a format of its own shows ##### — widen the column
or reduce the decimals to see it. 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….