Methodology
276 supported Excel functions
Every function the Basis engine compiles and evaluates from source. Each one is verified against Excel's cached values across 4,207 workbooks — a function that computes the wrong answer fails the corpus, not just a unit test.
Aggregates 36Logic 18Math & trig 50Statistical distributions 20Text 31Lookup & reference 11Date & time 22Financial 46Regression & forecasting 13Information 8Dynamic arrays 15Lambdas & higher-order 6
Aggregates
36| Function | Signature | Description |
|---|---|---|
| AGGREGATE | function_num, options, ref1, … | Aggregate with error/hidden-row skipping |
| AVERAGE | number1, [number2], … | Arithmetic mean of numeric values |
| AVERAGEIF | range, criteria, [avg_range] | Average of cells meeting a criterion |
| AVERAGEIFS | avg_range, crit_range1, crit1, … | Average with multiple criteria pairs |
| COUNT | value1, … | Counts numeric cells (ignores errors) |
| COUNTA | value1, … | Counts non-empty cells |
| COUNTBLANK | range | Counts empty cells in a range |
| COUNTIF | range, criteria | Count cells meeting a criterion |
| COUNTIFS | crit_range1, crit1, … | Count with multiple criteria pairs |
| LARGE | array, k | k-th largest value |
| MAX | number1, … | Largest numeric value |
| MAXIFS | max_range, crit_range1, crit1, … | Largest value meeting criteria |
| MEDIAN | number1, … | Middle value |
| MIN | number1, … | Smallest numeric value |
| MINIFS | min_range, crit_range1, crit1, … | Smallest value meeting criteria |
| PERCENTILE | array, k | k-th percentile (inclusive) |
| PERCENTILE.EXC | array, k | k-th percentile (exclusive, 0–1) |
| PERCENTILE.INC | array, k | k-th percentile (inclusive, 0–1) |
| PRODUCT | number1, … | Multiplies its arguments |
| QUARTILE | array, quart | Quartile value (0–4) |
| QUARTILE.EXC | array, quart | Quartile (exclusive, 1–3) |
| QUARTILE.INC | array, quart | Quartile (inclusive, 0–4) |
| RANK | number, ref, [order] | Rank of a value in a list |
| RANK.AVG | number, ref, [order] | Rank (ties get average rank) |
| RANK.EQ | number, ref, [order] | Rank (ties get lowest rank) |
| SMALL | array, k | k-th smallest value |
| STDEV | number1, … | Sample standard deviation |
| STDEVP | number1, … | Population standard deviation |
| SUBTOTAL | function_num, range, … | Aggregate function by number; skips nested subtotals |
| SUM | number1, [number2], … | Adds its arguments; ranges skip text, errors propagate |
| SUMIF | range, criteria, [sum_range] | Sum cells meeting a criterion |
| SUMIFS | sum_range, crit_range1, crit1, … | Sum with multiple criteria pairs |
| SUMPRODUCT | array1, [array2], … | Sum of element-wise products |
| SUMSQ | number1, … | Sum of squares |
| VAR | number1, … | Sample variance |
| VARP | number1, … | Population variance |
Logic
18| Function | Signature | Description |
|---|---|---|
| AND | logical1, … | TRUE if all are true |
| CHOOSE | index, value1, [value2], … | Picks value by index |
| IF | test, value_if_true, [value_if_false] | Conditional — untaken branch's errors are discarded |
| IFERROR | value, value_if_error | Fallback when value is an error |
| IFNA | value, value_if_na | Fallback when value is #N/A |
| IFS | test1, value1, [test2, value2], … | First true condition wins |
| ISBLANK | value | TRUE for empty cells |
| ISERR | value | TRUE for any error except #N/A |
| ISERROR | value | TRUE for any error |
| ISLOGICAL | value | TRUE for TRUE/FALSE |
| ISNA | value | TRUE for #N/A |
| ISNUMBER | value | TRUE for numbers |
| ISTEXT | value | TRUE for text |
| NA | — | The #N/A error value |
| NOT | logical | Inverts a logical |
| OR | logical1, … | TRUE if any is true |
| SWITCH | expression, value1, result1, …, [default] | Matches expression to values |
| XOR | logical1, … | TRUE for an odd number of TRUEs |
Math & trig
50| Function | Signature | Description |
|---|---|---|
| ABS | number | Absolute value |
| ACOS | number | Arccosine |
| ARABIC | text | Roman numeral to number |
| ASIN | number | Arcsine |
| ATAN | number | Arctangent |
| ATAN2 | x, y | Arctangent of y/x (Excel argument order) |
| BASE | number, radix, [min_length] | Number to text in given base |
| CEILING | number, significance | Round up to nearest multiple |
| CEILING.MATH | number, [significance], [mode] | Round up to nearest multiple |
| CEILING.PRECISE | number, [significance] | Round up to nearest multiple (sign-aware) |
| COMBIN | number, chosen | Combinations without repetition |
| COMBINA | number, chosen | Combinations with repetition |
| COS | angle_rad | Cosine |
| DECIMAL | text, radix | Text in given base to number |
| DEGREES | radians | Radians to degrees |
| EVEN | number | Round away from zero to even |
| EXP | number | e^number |
| FACT | number | Factorial |
| FACTDOUBLE | number | Double factorial |
| FLOOR | number, significance | Round down to nearest multiple |
| FLOOR.MATH | number, [significance], [mode] | Round down to nearest multiple |
| FLOOR.PRECISE | number, [significance] | Round down to nearest multiple (sign-aware) |
| GCD | number1, [number2], … | Greatest common divisor |
| INT | number | Round down to integer (floor) |
| ISO.CEILING | number, [significance] | Round up to nearest multiple (ISO) |
| LCM | number1, [number2], … | Least common multiple |
| LN | number | Natural log |
| LOG | number, [base=10] | Logarithm |
| LOG10 | number | Base-10 log |
| MOD | number, divisor | Remainder — sign follows the divisor |
| MROUND | number, multiple | Round to a multiple |
| MULTINOMIAL | number1, [number2], … | Multinomial coefficient |
| NORM.DIST | x, mean, sd, cumulative | Normal distribution (CDF or PDF) |
| ODD | number | Round away from zero to odd |
| PERMUT | number, chosen | Permutations |
| PI | — | 3.14159… |
| POWER | number, power | number^power |
| QUOTIENT | numerator, denominator | Integer quotient |
| RADIANS | degrees | Degrees to radians |
| RAND | — | Random number 0–1 (volatile) |
| RANDBETWEEN | bottom, top | Random integer in range (volatile) |
| ROMAN | number, [form] | Number to Roman numeral text |
| ROUND | number, digits | Round half away from zero |
| ROUNDDOWN | number, digits | Round toward zero |
| ROUNDUP | number, digits | Round away from zero |
| SIGN | number | -1, 0, or 1 |
| SIN | angle_rad | Sine |
| SQRT | number | Square root |
| TAN | angle_rad | Tangent |
| TRUNC | number, [digits] | Truncate toward zero |
Statistical distributions
20| Function | Signature | Description |
|---|---|---|
| BETA.DIST | x, alpha, beta, cumulative, [A], [B] | Beta distribution |
| BETA.INV | probability, alpha, beta, [A], [B] | Inverse beta distribution |
| BINOM.DIST | successes, trials, prob, cumulative | Binomial distribution |
| CHISQ.DIST | x, deg_freedom, cumulative | Chi-squared distribution |
| CONFIDENCE.NORM | alpha, sd, size | Normal confidence interval half-width |
| CONFIDENCE.T | alpha, sd, size | Student t confidence interval half-width |
| EXPON.DIST | x, lambda, cumulative | Exponential distribution |
| F.DIST | x, deg1, deg2, cumulative | F distribution |
| GAMMA | number | Gamma function |
| GAMMA.DIST | x, alpha, beta, cumulative | Gamma distribution |
| GAMMA.INV | probability, alpha, beta | Inverse gamma distribution |
| LOGNORM.DIST | x, mean, sd, cumulative | Lognormal distribution |
| LOGNORM.INV | probability, mean, sd | Inverse lognormal distribution |
| NORM.INV | probability, mean, sd | Inverse normal distribution |
| NORM.S.DIST | z, cumulative | Standard normal distribution |
| NORM.S.INV | probability | Inverse standard normal distribution |
| POISSON.DIST | x, mean, cumulative | Poisson distribution |
| T.DIST | x, deg_freedom, cumulative | Student t distribution |
| T.INV | probability, deg_freedom | Inverse Student t (left-tail) |
| WEIBULL.DIST | x, alpha, beta, cumulative | Weibull distribution |
Text
31| Function | Signature | Description |
|---|---|---|
| ASC | text | Full-width to half-width characters |
| BAHTTEXT | number | Number to Thai Baht text |
| CHAR | number | Character from code point |
| CLEAN | text | Remove non-printable characters |
| CODE | text | Code point of first character |
| CONCAT | text1, … | Joins text (modern) |
| CONCATENATE | text1, [text2], … | Joins text |
| DBCS | text | Half-width to full-width characters |
| DOLLAR | number, [decimals] | Format number as currency text |
| EXACT | text1, text2 | Case-sensitive equality |
| FIND | find_text, within_text, [start] | Position of text (case-sensitive) |
| FIXED | number, [decimals], [no_commas] | Format number as text with decimals |
| LEFT | text, [n=1] | Leading characters |
| LEN | text | Character count |
| LOWER | text | lowercase |
| MID | text, start, n | Characters from the middle |
| NUMBERVALUE | text, [decimal_sep], [group_sep] | Locale-aware text to number |
| PHONETIC | reference | Phonetic (furigana) text |
| PROPER | text | Title Case |
| REPLACE | old_text, start, num_chars, new_text | Replace characters by position |
| REPT | text, times | Repeat text n times |
| RIGHT | text, [n=1] | Trailing characters |
| SEARCH | find_text, within_text, [start] | Position of text (case-insensitive) |
| SUBSTITUTE | text, old_text, new_text, [instance] | Replace occurrences of text |
| TEXT | value, format_text | Format a number as text |
| TEXTJOIN | delimiter, ignore_empty, text1, … | Joins text with a delimiter |
| TRIM | text | Collapse whitespace |
| UNICHAR | number | Unicode character from code point |
| UNICODE | text | Unicode code point of first character |
| UPPER | text | UPPERCASE |
| VALUE | text | Text to number |
Lookup & reference
11| Function | Signature | Description |
|---|---|---|
| ADDRESS | row, col, [abs_num], [a1], [sheet] | Cell address as text |
| COLUMN | [reference] | Column number of a reference |
| HLOOKUP | value, table, row_index, [approx] | Horizontal lookup in first row |
| HYPERLINK | url, [friendly_name] | Clickable hyperlink |
| INDEX | range, row, [col] | Value at a position in a range |
| LOOKUP | value, lookup_range, [result_range] | Look up a value in a range |
| MATCH | value, array, [type=1] | Position of a value in an array |
| OFFSET | reference, rows, cols, [height], [width] | A reference shifted or resized from a base |
| ROW | [reference] | Row number of a reference |
| VLOOKUP | value, table, col_index, [approx] | Vertical lookup in first column |
| XLOOKUP | value, lookup_array, return_array, [if_not_found] | Modern exact-match lookup |
Date & time
22| Function | Signature | Description |
|---|---|---|
| DATE | year, month, day | Date serial number |
| DATEDIF | start_date, end_date, unit | Difference between dates in years, months, or days |
| DATEVALUE | date_text | Text to date serial |
| DAY | serial | Day of a date |
| DAYS | end_date, start_date | Days between two dates |
| DAYS360 | start_date, end_date, [method] | Days between dates (30/360 basis) |
| EDATE | serial, months | Date shifted by months |
| EOMONTH | serial, months | End of shifted month |
| HOUR | serial | Hour of a time (0–23) |
| MINUTE | serial | Minute of a time (0–59) |
| MONTH | serial | Month of a date |
| NETWORKDAYS | start_date, end_date, [holidays] | Working days between dates |
| NETWORKDAYS.INTL | start_date, end_date, [weekend], [holidays] | Working days between dates (custom weekends) |
| NOW | — | Current date and time serial (volatile) |
| SECOND | serial | Second of a time (0–59) |
| TIME | hour, minute, second | Time serial number |
| TODAY | — | Today's date serial (volatile) |
| WEEKDAY | serial, [return_type] | Day of the week (1–7) |
| WORKDAY | start_date, days, [holidays] | Date offset by working days |
| WORKDAY.INTL | start_date, days, [weekend], [holidays] | Date offset by working days (custom weekends) |
| YEAR | serial | Year of a date |
| YEARFRAC | start_date, end_date, [basis] | Fraction of a year between dates |
Financial
46| Function | Signature | Description |
|---|---|---|
| ACCRINT | issue, first_interest, settlement, rate, par, frequency, [basis] | Accrued interest (periodic) |
| ACCRINTM | issue, settlement, rate, par, [basis] | Accrued interest (maturity) |
| COUPDAYBS | settlement, maturity, frequency, [basis] | Days from coupon start to settlement |
| COUPDAYS | settlement, maturity, frequency, [basis] | Days in the coupon period |
| COUPDAYSNC | settlement, maturity, frequency, [basis] | Days from settlement to next coupon |
| COUPNCD | settlement, maturity, frequency, [basis] | Next coupon date after settlement |
| COUPNUM | settlement, maturity, frequency, [basis] | Number of remaining coupons |
| COUPPCD | settlement, maturity, frequency, [basis] | Previous coupon date before settlement |
| CUMIPMT | rate, nper, pv, start, end, type | Cumulative interest paid |
| CUMPRINC | rate, nper, pv, start, end, type | Cumulative principal paid |
| DB | cost, salvage, life, period, [month] | Declining-balance depreciation |
| DDB | cost, salvage, life, period, [factor] | Double-declining balance depreciation |
| DISC | settlement, maturity, pr, redemption, [basis] | Discount rate of a security |
| DOLLARDE | fractional_dollar, fraction | Fractional price to decimal |
| DOLLARFR | decimal_dollar, fraction | Decimal price to fractional |
| DURATION | settlement, maturity, coupon, yld, frequency, [basis] | Macaulay duration |
| EFFECT | nominal_rate, npery | Effective annual interest rate |
| FV | rate, nper, pmt, [pv], [type] | Future value |
| INTRATE | settlement, maturity, investment, redemption, [basis] | Interest rate of a fully invested security |
| IPMT | rate, per, nper, pv, [fv], [type] | Interest portion of a payment |
| IRR | values, [guess] | Internal rate of return |
| MDURATION | settlement, maturity, coupon, yld, frequency, [basis] | Modified duration |
| MIRR | values, finance_rate, reinvest_rate | Modified internal rate of return |
| NOMINAL | effect_rate, npery | Nominal annual interest rate |
| NPER | rate, pmt, pv, [fv], [type] | Number of periods |
| NPV | rate, value1, … | Net present value |
| ODDFPRICE | settlement, maturity, issue, first_coupon, rate, yld, redemption, frequency, [basis] | Price with odd first period |
| ODDLPRICE | settlement, maturity, last_interest, rate, yld, redemption, frequency, [basis] | Price with odd last period |
| PMT | rate, nper, pv, [fv], [type] | Loan payment |
| PPMT | rate, per, nper, pv, [fv], [type] | Principal portion of a payment |
| PRICE | settlement, maturity, rate, yld, redemption, frequency, [basis] | Bond price per $100 face value |
| PRICEDISC | settlement, maturity, discount, redemption, [basis] | Price of a discounted security |
| PRICEMAT | settlement, maturity, issue, rate, yld, [basis] | Price of a security paid at maturity |
| PV | rate, nper, pmt, [fv], [type] | Present value |
| RATE | nper, pmt, pv, [fv], [type], [guess] | Interest rate per period |
| RECEIVED | settlement, maturity, investment, discount, [basis] | Amount received at maturity |
| SLN | cost, salvage, life | Straight-line depreciation |
| SYD | cost, salvage, life, per | Sum-of-years-digits depreciation |
| TBILLEQ | settlement, maturity, discount | T-bill bond-equivalent yield |
| TBILLPRICE | settlement, maturity, discount | T-bill price per $100 |
| TBILLYIELD | settlement, maturity, pr | T-bill yield |
| XIRR | values, dates, [guess] | IRR for irregular cash-flow dates |
| XNPV | rate, values, dates | NPV for irregular cash-flow dates |
| YIELD | settlement, maturity, rate, pr, redemption, frequency, [basis] | Bond yield |
| YIELDDISC | settlement, maturity, pr, redemption, [basis] | Discounted security yield |
| YIELDMAT | settlement, maturity, issue, rate, pr, [basis] | Security yield paid at maturity |
Regression & forecasting
13| Function | Signature | Description |
|---|---|---|
| CORREL | array1, array2 | Correlation coefficient |
| COVARIANCE.P | array1, array2 | Population covariance |
| COVARIANCE.S | array1, array2 | Sample covariance |
| FORECAST | x, known_y's, known_x's | Predicted value (linear regression) |
| FORECAST.LINEAR | x, known_y's, known_x's | Predicted value (linear regression) |
| GROWTH | known_y's, [known_x's], [new_x's], [const] | Exponential growth prediction |
| INTERCEPT | known_y's, known_x's | Y-intercept of linear regression |
| LINEST | known_y's, [known_x's], [const], [stats] | Linear regression statistics |
| LOGEST | known_y's, [known_x's], [const], [stats] | Exponential regression statistics |
| RSQ | known_y's, known_x's | R-squared of linear regression |
| SLOPE | known_y's, known_x's | Slope of linear regression |
| STEYX | known_y's, known_x's | Standard error of regression |
| TREND | known_y's, [known_x's], [new_x's], [const] | Linear trend prediction |
Information
8| Function | Signature | Description |
|---|---|---|
| CELL | info_type, [reference] | Information about a cell |
| FORMULATEXT | reference | Formula as text |
| INFO | type_text | Environment information |
| N | value | Value converted to number |
| SHEET | [value] | Sheet number of a reference |
| SHEETS | [reference] | Number of sheets |
| T | value | Text if text, else empty |
| TYPE | value | Type number of a value |
Dynamic arrays
15| Function | Signature | Description |
|---|---|---|
| CHOOSECOLS | array, col1, [col2], … | Spills selected columns |
| CHOOSEROWS | array, row1, [row2], … | Spills selected rows |
| DROP | array, rows, [cols] | Spills array minus leading/trailing rows or columns |
| EXPAND | array, rows, [cols], [pad] | Spills array padded to size |
| FILTER | array, include, [if_empty] | Spills rows where include is TRUE |
| HSTACK | array1, [array2], … | Spills arrays stacked horizontally |
| SEQUENCE | rows, [cols], [start], [step] | Spills a sequence of numbers |
| SORT | array, [sort_index], [order] | Spills array sorted |
| TAKE | array, rows, [cols] | Spills leading/trailing rows or columns |
| TOCOL | array, [ignore], [scan_by_column] | Spills array as single column |
| TOROW | array, [ignore], [scan_by_column] | Spills array as single row |
| UNIQUE | array, [by_col], [exactly_once] | Spills distinct values in first-seen order |
| VSTACK | array1, [array2], … | Spills arrays stacked vertically |
| WRAPCOLS | vector, wrap_count, [pad] | Spills vector wrapped into columns |
| WRAPROWS | vector, wrap_count, [pad] | Spills vector wrapped into rows |
Lambdas & higher-order
6| Function | Signature | Description |
|---|---|---|
| BYCOL | array, lambda | Applies a LAMBDA to each column |
| BYROW | array, lambda | Applies a LAMBDA to each row |
| LAMBDA | param1, [param2], …, calculation | A reusable function value |
| LET | name1, value1, …, calculation | Names a value for reuse inside one formula |
| MAP | array, [array2], …, lambda | Applies a LAMBDA to each element |
| REDUCE | initial, array, lambda | Accumulates across every element |