Supported Excel features

Updated 2026-11-13

Which parts of an Excel workbook work in a SpreadAPI service, which do not, and what to use instead.

The short version

A service calculates with the formulas in your workbook. Formulas, functions, defined names, tables and number formats work. VBA macros do not run, and links to other workbooks are not followed. For both there is a formula-based alternative, described below.

What works

FeatureNotes
FormulasExcel formula syntax, including references to other sheets of the same workbook.
FunctionsMore than 500 functions; see the next section.
Dynamic arraysFunctions that return several cells, such as FILTER, SORT, UNIQUE and SEQUENCE, spill into the neighbouring cells.
LET and LAMBDASupported, together with helpers such as MAP, REDUCE, SCAN, BYROW and BYCOL.
Defined namesNames for cells and ranges are kept on import and can be managed with Name manager (Namensmanager).
TablesExcel tables are kept, and structured references such as SUM(Prices[Price]) calculate.
Several sheetsA workbook can have many sheets. Inputs and outputs can sit on any of them.
Number formatsPercentage, currency, date and custom formats are kept. They decide how a parameter is set up; see Formatting and number formats.
Cell formattingFonts, colours, borders, alignment and merged cells are kept.
Drop-down listsA list rule (data validation) is kept and becomes the allowed values of an input; see Input validation.
Error values#DIV/0!, #N/A, #VALUE!, #REF!, #NAME?, #NUM! and #NULL! behave as in Excel. An output cell with an error returns the error text as its value.

Functions

The editor lists every available function. Click Insert function (Funktion einfügen) in the toolbar, search by name or choose a category, and read the description and arguments.

The categories and some of the functions in them:

CategoryExamples
Math and TrigonometrySUM, SUMIF, SUMIFS, SUMPRODUCT, ROUND, ROUNDUP, MOD, INT, ABS, SEQUENCE, RANDARRAY
LogicalIF, IFS, IFERROR, IFNA, AND, OR, NOT, XOR, SWITCH, LET, LAMBDA
Lookup and ReferenceXLOOKUP, XMATCH, VLOOKUP, HLOOKUP, INDEX, MATCH, OFFSET, INDIRECT, CHOOSE, FILTER, SORT, SORTBY, UNIQUE, TAKE, DROP, VSTACK, HSTACK
TextTEXT, CONCAT, TEXTJOIN, TEXTSPLIT, TEXTBEFORE, TEXTAFTER, LEFT, RIGHT, MID, LEN, TRIM, UPPER, LOWER, SUBSTITUTE, VALUE
Date and TimeDATE, TODAY, NOW, YEAR, MONTH, DAY, EDATE, EOMONTH, DATEDIF, NETWORKDAYS, WORKDAY, WEEKNUM, YEARFRAC
FinancialPMT, IPMT, PPMT, FV, PV, NPV, IRR, XIRR, XNPV, RATE, NPER, SLN, DB
StatisticalAVERAGE, AVERAGEIFS, COUNT, COUNTA, COUNTIF, COUNTIFS, MIN, MAX, MINIFS, MAXIFS, MEDIAN, STDEV.S, PERCENTILE.INC, RANK.EQ, FORECAST, TREND
InformationISBLANK, ISNUMBER, ISTEXT, ISERROR, ISNA, NA, TYPE
EngineeringCONVERT, BIN2DEC, DEC2HEX, BITAND, COMPLEX
DatabaseDSUM, DAVERAGE, DCOUNT, DGET, DMAX, DMIN

If a formula uses a function that is not available, its cell shows #NAME?.

What does not work, and what to do instead

FeatureWhat happensAlternative
VBA macrosMacros do not run. An .xlsm file is imported without them, and you see the notice This file contains macros (.xlsm), but macros are not supported. Only the spreadsheet data will be imported.Rebuild the logic with formulas. IF, IFS, XLOOKUP, LET and LAMBDA cover most macro calculations.
Functions written in VBAA cell that calls your own VBA function shows #NAME?.Write the function as a LAMBDA formula and give it a name in Name manager, or replace the call with standard functions.
Buttons and forms that start a macroThey do nothing in a service.Make the values the macro would set into inputs. A caller sends them with each call.
Links to other workbooksA formula that reads from another file has no source on the server and cannot calculate; it usually shows #REF!.Copy the linked data into a sheet of this workbook and point the formula there.
Functions that exist only in Google SheetsGOOGLEFINANCE, IMPORTRANGE, QUERY and similar show #NAME?.Replace them with fixed values or standard functions.
Charts, images and shapes as resultsA service returns the values of cells. A chart is not an output.Return the numbers behind the chart as outputs and draw the chart where the result is shown.

How to check your workbook

  1. Import the workbook; see Import an Excel file.
  2. Look at the cells you want to return. A cell that shows #NAME? or #REF! uses something from the table above.
  3. Compare a few results with Excel, using the same input values.
  4. Try other input values in the test panel before you publish; see Test before publishing.

If results differ from Excel, see Wrong or old results.

Functions that change by themselves

NOW, TODAY, RAND, RANDBETWEEN and RANDARRAY give a new value each time they are calculated. A service can answer identical requests from its cache, so two calls with the same inputs can return the same value. How to get a fresh calculation is described in Caching and performance; how to design around it is in Workbook tips.

For developers and agents

  • An output whose cell holds an error returns the error as text in value, for example "#DIV/0!". Check for a leading # if your code needs to tell errors from results.
  • An unknown function evaluates to #NAME?. A reference into another workbook has no source and usually evaluates to #REF!.
  • A range output returns its cells as an array of rows; see Add outputs.
  • The complete, current function list is the one Insert function shows in the editor.

FAQ

Does SpreadAPI support all Excel formulas?

It supports Excel formula syntax and more than 500 functions, including XLOOKUP, dynamic arrays, LET and LAMBDA. Click Insert function in the editor's toolbar to see the complete list.

Do VBA macros work?

No. Macros do not run, and an .xlsm file is imported without them. Rebuild the logic with formulas; IF, XLOOKUP, LET and LAMBDA cover most cases.

No. Links to other workbooks are not followed, and the formula usually shows #REF!. Copy the linked data into a sheet of this workbook and point the formula there.

Why does a cell show #NAME? after the import?

The formula uses a function that is not available, most often a function written in VBA or one that exists only in Google Sheets. Replace it with standard functions.

Are named ranges and tables supported?

Yes. Defined names and Excel tables are kept on import, and formulas that use them, including structured references such as Prices[Price], calculate.

Do dynamic array functions like FILTER and UNIQUE work?

Yes. They spill into the neighbouring cells as in Excel. To return the whole result, add a range that includes the cell with the formula as an output: the answer then has as many rows as the formula fills. See Add outputs.

Can a service return a chart?

No. A service returns cell values. Return the numbers behind the chart as outputs and draw the chart in your own application.

What does an API caller get when a formula has an error?

The output's value is the error text, for example "#DIV/0!" or "#N/A". Wrap the formula in IFERROR if you prefer to return a fallback value.

Does my workbook's conditional logic with IF and lookups work across sheets?

Yes. Formulas can reference any sheet of the same workbook, and inputs and outputs can sit on different sheets.

As an agent, how do I know whether a function is available before I build a service?

Write the formula into the workbook and read the cell: an unavailable function evaluates to #NAME?. Test the draft with sample inputs before publishing; see Build a service with an agent.