Excel Support
Explo compiles Excel formulas to native code for fast, deterministic execution. Below is a comprehensive breakdown of every Excel function and feature, with current support status.
Functions by Category
Math63 shown · 63/63 supported
| Function | Status | Details |
|---|---|---|
| ABS | Supported | Absolute value |
| ACOS | Supported | Arc cosine in radians |
| ACOSH | Supported | Inverse hyperbolic cosine |
| ACOT | Supported | Arc cotangent - returns radians in range (0, π) |
| ACOTH | Supported | Inverse hyperbolic cotangent - 0.5*ln((x+1)/(x-1)) |
| ACSCH | Supported | Inverse hyperbolic cosecant |
| ASECH | Supported | Inverse hyperbolic secant |
| ASIN | Supported | Arc sine in radians |
| ASINH | Supported | Inverse hyperbolic sine |
| ATAN | Supported | Arc tangent in radians |
| ATAN2 | Supported | Arc tangent of y/x in radians |
| ATANH | Supported | Inverse hyperbolic tangent |
| CEILING | Supported | Round up to multiple |
| CEILING.MATH | Supported | Round up to nearest integer or multiple of significance; mode param controls negative number direction |
| CEILING.PRECISE | Supported | Round up to nearest multiple, always away from zero - equivalent to ISO.CEILING |
| COMBIN | Supported | Number of combinations - COMBIN(n, k) = n! / (k! * (n-k)!) |
| COMBINA | Supported | Number of combinations with repetition - COMBINA(n, k) = (n+k-1)! / (k! * (n-1)!) |
| CONVERT | Supported | Unit conversion - CONVERT(number, from_unit, to_unit) |
| COS | Supported | Cosine of angle in radians |
| COSH | Supported | Hyperbolic cosine |
| COT | Supported | Cotangent - 1/tan(x) |
| COTH | Supported | Hyperbolic cotangent - 1/tanh(x) |
| CSC | Supported | Cosecant - 1/sin(x) |
| CSCH | Supported | Hyperbolic cosecant - 1/sinh(x) |
| DEGREES | Supported | Converts radians to degrees |
| ECMA.CEILING | Supported | ECMA-376 ceiling: rounds up to nearest multiple; zero significance returns 0 |
| EVEN | Supported | Round up to nearest even integer |
| EXP | Supported | e raised to power |
| FACT | Supported | Factorial - n! Returns #NUM! if n < 0 or n > 170 |
| FACTDOUBLE | Supported | Double factorial - n!! Returns #NUM! if n < -1 or n > 288 |
| FLOOR | Supported | Round down to multiple |
| FLOOR.MATH | Supported | Round down to nearest integer or multiple of significance; mode param controls negative number direction |
| FLOOR.PRECISE | Supported | Round down to nearest multiple, always toward negative infinity - equivalent to FLOOR.MATH with mode=0 |
| GCD | Supported | Greatest common divisor of integers - returns #NUM! if any argument is negative |
| INT | Supported | Round down to integer |
| ISO.CEILING | Supported | Round up to nearest multiple of significance, always away from zero |
| LCM | Supported | Least common multiple of integers - returns #NUM! if any argument is negative |
| LN | Supported | Natural logarithm |
| LOG | Supported | Logarithm with custom base |
| LOG10 | Supported | Base-10 logarithm |
| MOD | Supported | Modulo operation |
| MROUND | Supported | Round to nearest multiple |
| ODD | Supported | Round up to nearest odd integer |
| PERMUT | Supported | Number of permutations - PERMUT(n, k) = n! / (n-k)! |
| PERMUTATIONA | Supported | Number of permutations with repetition - PERMUTATIONA(n, k) = n^k |
| PI | Supported | Returns the mathematical constant pi |
| POWER | Supported | Exponentiation |
| QUOTIENT | Supported | Integer portion of division - QUOTIENT(numerator, denominator) |
| RADIANS | Supported | Converts degrees to radians |
| RAND | Supported | Random number - returns compile-time constant from baseline value for deterministic validation |
| RANDBETWEEN | Supported | Random integer between bounds - returns compile-time constant from baseline value for deterministic validation |
| ROUND | Supported | Round to specified digits |
| ROUNDDOWN | Supported | Round toward zero |
| ROUNDUP | Supported | Round away from zero |
| SEC | Supported | Secant - 1/cos(x) |
| SECH | Supported | Hyperbolic secant - 1/cosh(x) |
| SIGN | Supported | Returns -1, 0, or 1 |
| SIN | Supported | Sine of angle in radians |
| SINH | Supported | Hyperbolic sine |
| SQRT | Supported | Square root |
| TAN | Supported | Tangent of angle in radians |
| TANH | Supported | Hyperbolic tangent |
| TRUNC | Supported | Truncate to integer |
Aggregation55 shown · 55/55 supported
| Function | Status | Details |
|---|---|---|
| AGGREGATE | Supported | Aggregate using a specified function (function_num 1-19) with options to ignore errors/hidden rows |
| AVEDEV | Supported | Average of absolute deviations from the mean - AVEDEV(number1, number2, ...) |
| AVERAGE | Supported | Arithmetic mean |
| AVERAGEA | Supported | Average including text (0) and booleans (TRUE=1, FALSE=0) |
| AVERAGEIF | Supported | Average with single condition - requires static ranges |
| AVERAGEIFS | Supported | Average with multiple conditions - requires static ranges |
| COUNT | Supported | Count numeric values |
| COUNTA | Supported | Count non-empty values |
| COUNTBLANK | Supported | Count empty values |
| COUNTIF | Supported | Count with single condition - requires static ranges |
| COUNTIFS | Supported | Count with multiple conditions - requires static ranges |
| DEVSQ | Supported | Sum of squared deviations from the mean |
| GEOMEAN | Supported | Geometric mean - all values must be positive |
| HARMEAN | Supported | Harmonic mean - all values must be positive |
| KURT | Supported | Sample excess kurtosis - requires at least 4 values |
| LARGE | Supported | K-th largest value |
| MAX | Supported | Maximum value |
| MAXA | Supported | Maximum value including text (as 0) and booleans |
| MAXIFS | Supported | Max with multiple conditions - requires static ranges |
| MEDIAN | Supported | Middle value when sorted |
| MIN | Supported | Minimum value |
| MINA | Supported | Minimum value including text (as 0) and booleans |
| MINIFS | Supported | Min with multiple conditions - requires static ranges |
| MODE | Supported | Most frequently occurring value; returns #N/A if no value repeats |
| PERCENTILE | Supported | K-th percentile value |
| PERCENTRANK | Supported | Percentile rank of value in dataset (0-1 inclusive), legacy alias for PERCENTRANK.INC |
| PERCENTRANK.INC | Supported | Percentile rank of value in dataset (0-1 inclusive) |
| PRODUCT | Supported | Product of values |
| QUARTILE | Supported | Quartile value (0-4) |
| RANK | Supported | Rank of a number in a list (legacy alias for RANK.EQ) |
| RANK.EQ | Supported | Rank of a number in a list, ties get same rank (lowest rank) |
| SKEW | Supported | Sample skewness - requires at least 3 values |
| SKEW.P | Supported | Population skewness - requires at least 1 value |
| SMALL | Supported | K-th smallest value |
| STDEV | Supported | Sample standard deviation |
| STDEV.P | Supported | Population standard deviation (modern name for STDEVP) |
| STDEV.S | Supported | Sample standard deviation (modern name for STDEV) |
| STDEVA | Supported | Sample standard deviation including text (as 0) and logical values |
| STDEVP | Supported | Population standard deviation |
| STDEVPA | Supported | Population standard deviation including text (as 0) and logical values |
| SUBTOTAL | Supported | Subtotal using a specified aggregate function (function_num 1-11 or 101-111) |
| SUM | Supported | Sum of values |
| SUMIF | Supported | Sum with single condition - requires static ranges |
| SUMIFS | Supported | Sum with multiple conditions - requires static ranges |
| SUMSQ | Supported | Sum of squares of values |
| SUMX2MY2 | Supported | Sum of differences of squares: Σ(x²-y²) |
| SUMX2PY2 | Supported | Sum of sums of squares: Σ(x²+y²) |
| SUMXMY2 | Supported | Sum of squares of differences: Σ(x-y)² |
| TRIMMEAN | Supported | Mean of interior data after trimming top/bottom (percent/2) values |
| VAR | Supported | Sample variance |
| VAR.P | Supported | Population variance (modern name for VARP) |
| VAR.S | Supported | Sample variance (modern name for VAR) |
| VARA | Supported | Sample variance including text (as 0) and logical values |
| VARP | Supported | Population variance |
| VARPA | Supported | Population variance including text (as 0) and logical values |
Logic26 shown · 26/26 supported
| Function | Status | Details |
|---|---|---|
| AND | Supported | Logical AND |
| CHOOSE | Supported | Select from list by index |
| ERROR.TYPE | Supported | Returns error type number: 1=#NULL!, 2=#DIV/0!, 3=#VALUE!, 4=#REF!, 5=#NAME?, 6=#NUM!, 7=#N/A; returns #N/A for non-errors |
| FALSE | Supported | Boolean FALSE constant |
| IF | Supported | Conditional expression |
| IFERROR | Supported | Error handling |
| IFNA | Supported | Handle N/A errors |
| IFS | Supported | Multiple conditions |
| ISBLANK | Supported | Check if empty |
| ISERR | Supported | Check if error (excluding #N/A) |
| ISERROR | Supported | Check if error |
| ISEVEN | Supported | Check if number is even; truncates toward zero |
| ISLOGICAL | Supported | Check if boolean |
| ISNA | Supported | Check if N/A |
| ISNONTEXT | Supported | Check if not text |
| ISNUMBER | Supported | Check if number |
| ISODD | Supported | Check if number is odd; truncates toward zero |
| ISREF | Supported | Check if value is a valid cell reference; TRUE for cell refs and resolved INDIRECT, FALSE for errors/constants |
| ISTEXT | Supported | Check if text |
| NA | Supported | Returns the #N/A error value |
| NOT | Supported | Logical negation |
| OR | Supported | Logical OR |
| SWITCH | Supported | Pattern matching |
| TRUE | Supported | Boolean TRUE constant |
| TYPE | Supported | Returns value type: 1=number, 2=text, 4=boolean, 16=error, 64=array |
| XOR | Supported | Logical XOR - TRUE if odd number of arguments are TRUE |
Text45 shown · 45/45 supported
| Function | Status | Details |
|---|---|---|
| ARABIC | Supported | Converts Roman numeral text to Arabic number |
| ARRAYTOTEXT | Supported | Convert array to text; format 0=concise (comma-separated), 1=strict (braces with quoted strings) |
| ASC | Supported | Convert full-width (double-byte) characters to half-width (single-byte) characters |
| BAHTTEXT | Supported | Convert number to Thai baht currency text |
| CHAR | Supported | Character from code |
| CLEAN | Supported | Remove non-printable characters |
| CODE | Supported | Code of first character |
| CONCAT | Supported | String concatenation (newer) |
| CONCATENATE | Supported | String concatenation |
| DBCS | Supported | Convert half-width (single-byte) characters to full-width (double-byte) characters |
| DOLLAR | Supported | Convert number to text with dollar sign and optional decimal places |
| ENCODEURL | Supported | Percent-encodes URL-unsafe characters in text |
| EXACT | Supported | Case-sensitive string comparison |
| FIND | Supported | Find position of text (case-sensitive) |
| FINDB | Supported | Find position of text by bytes (case-sensitive, DBCS-aware) |
| FIXED | Supported | Round number and return as text with optional thousands separators |
| FORMULATEXT | Supported | Returns formula as text; when called via _XLUDF. prefix returns #NAME? |
| HYPERLINK | Supported | Creates a clickable hyperlink - returns friendly_name if provided, otherwise link_location |
| JIS | Supported | Alias for DBCS - convert half-width to full-width characters (Japanese) |
| LEFT | Supported | Extract leftmost characters |
| LEFTB | Supported | Extract leftmost bytes (DBCS-aware) |
| LEN | Supported | String length |
| LENB | Supported | String byte length (DBCS-aware) |
| LOWER | Supported | Convert to lowercase |
| MID | Supported | Extract substring |
| MIDB | Supported | Extract substring by bytes (DBCS-aware) |
| N | Supported | Returns number if argument is number, 0 otherwise |
| NUMBERVALUE | Supported | Convert text to number with locale separators; when called via _XLUDF. prefix returns #NAME? |
| PROPER | Supported | Capitalize first letter of each word |
| REPLACE | Supported | Replace by position |
| REPLACEB | Supported | Replace by byte position (DBCS-aware) |
| REPT | Supported | Repeat text |
| RIGHT | Supported | Extract rightmost characters |
| RIGHTB | Supported | Extract rightmost bytes (DBCS-aware) |
| ROMAN | Supported | Converts Arabic number to Roman numeral text |
| SEARCH | Supported | Find position of text (case-insensitive) |
| SEARCHB | Supported | Find position of text by bytes (case-insensitive, DBCS-aware) |
| SUBSTITUTE | Supported | Replace text |
| T | Supported | Returns text if argument is text, empty string otherwise |
| TEXT | Supported | Format value as text |
| TEXTJOIN | Supported | Join text with delimiter |
| TRIM | Supported | Remove whitespace |
| UNICHAR | Supported | Unicode character from code point (full Unicode range) |
| UPPER | Supported | Convert to uppercase |
| VALUE | Supported | Convert text to number |
Lookup8 shown · 8/8 supported
| Function | Status | Details |
|---|---|---|
| GETPIVOTDATA | Supported | PivotTable lookup - returns compile-time constant from baseline value |
| HLOOKUP | Supported | Only works with static ranges |
| INDEX | Supported | Only works with static ranges |
| LOOKUP | Supported | Vector form lookup - only works with static ranges |
| MATCH | Supported | Only works with static ranges |
| VLOOKUP | Supported | Only works with static ranges |
| XLOOKUP | Supported | Search and return from separate arrays - supports exact/approximate match and search modes |
| XMATCH | Supported | Returns position of value in array - supports exact/approximate match and search modes |
Reference10 shown · 10/10 supported
| Function | Status | Details |
|---|---|---|
| ADDRESS | Supported | Returns cell address as string - supports abs_num, a1_ref_style, and sheet_name parameters |
| AREAS | Supported | Area count - compiles to constant: counts contiguous ranges in the reference |
| CELL | Supported | Cell information - supports address, row, col, contents, type |
| COLUMN | Supported | Column number of reference - compiles to constant for static refs |
| COLUMNS | Supported | Column count - compiles to constant for static ranges |
| INDIRECT | Supported | Dynamic cell reference - compile-time resolution for constants, runtime lookup otherwise |
| ISECT | Supported | Intersection operator (space) - returns intersection of two ranges |
| OFFSET | Supported | Returns reference offset from a starting cell - requires static (constant) arguments |
| ROW | Supported | Row number of reference - compiles to constant for static refs |
| ROWS | Supported | Row count - compiles to constant for static ranges |
Date20 shown · 20/20 supported
| Function | Status | Details |
|---|---|---|
| DATE | Supported | Creates date serial number from year/month/day |
| DATEDIF | Supported | Difference between dates in specified units |
| DATEVALUE | Supported | Converts date text string to Excel serial number - supports M/D/YYYY, YYYY-MM-DD, and other common formats |
| DAY | Supported | Extracts day from date serial number |
| DAYS | Supported | Days between two dates |
| DAYS360 | Supported | Days between dates on 360-day year - supports US (NASD) and European methods |
| EDATE | Supported | Add months to a date |
| EOMONTH | Supported | End of month after adding months |
| ISOWEEKNUM | Supported | ISO 8601 week number - weeks start Monday, week 1 contains first Thursday |
| MONTH | Supported | Extracts month from date serial number |
| NETWORKDAYS | Supported | Count working days (Mon-Fri) between two dates, excluding weekends and optional holidays |
| NETWORKDAYS.INTL | Supported | Count working days between two dates with custom weekend definition |
| NOW | Supported | Returns current date and time - uses reference date from spreadsheet for validation |
| TODAY | Supported | Returns current date as serial - uses reference date from spreadsheet for validation |
| WEEKDAY | Supported | Day of week from date serial |
| WEEKNUM | Supported | Week number from date serial |
| WORKDAY | Supported | Returns date N workdays from start, skipping weekends and holidays |
| WORKDAY.INTL | Supported | Returns date N workdays from start with custom weekend definition |
| YEAR | Supported | Extracts year from date serial number |
| YEARFRAC | Supported | Year fraction between two dates - supports basis 0-4 (30/360, Actual/Actual, Actual/360, Actual/365, European 30/360) |
Time5 shown · 5/5 supported
| Function | Status | Details |
|---|---|---|
| HOUR | Supported | Extracts hour (0-23) from time portion of serial number |
| MINUTE | Supported | Extracts minute (0-59) from time portion of serial number |
| SECOND | Supported | Extracts second (0-59) from time portion of serial number |
| TIME | Supported | Creates time serial from hour/minute/second - values overflow properly |
| TIMEVALUE | Supported | Converts time text string to decimal fraction of day (0 to 0.999...) - ignores date portion |
Financial51 shown · 51/51 supported
| Function | Status | Details |
|---|---|---|
| ACCRINT | Supported | Accrued interest for periodic coupon securities |
| ACCRINTM | Supported | Accrued interest for security that pays at maturity |
| AMORDEGRC | Supported | French degressive depreciation with coefficients |
| AMORLINC | Supported | French linear depreciation with prorating |
| COUPDAYBS | Supported | Days from beginning of coupon period to settlement date |
| COUPDAYS | Supported | Number of days in coupon period containing settlement date |
| COUPDAYSNC | Supported | Number of days from settlement date to next coupon date |
| COUPNCD | Supported | Next coupon date after settlement date |
| COUPNUM | Supported | Number of coupons payable between settlement and maturity |
| COUPPCD | Supported | Previous coupon date before settlement date |
| CUMIPMT | Supported | Cumulative interest paid between periods |
| CUMPRINC | Supported | Cumulative principal paid between periods |
| DB | Supported | Declining balance depreciation |
| DDB | Supported | Double declining balance depreciation |
| DISC | Supported | Discount rate for a security - DISC(settlement, maturity, pr, redemption, [basis]) |
| DOLLARDE | Supported | Converts fractional dollar notation to decimal |
| DOLLARFR | Supported | Converts decimal dollar amount to fractional notation |
| DURATION | Supported | Macaulay duration for a bond with par value $100 |
| EFFECT | Supported | Effective annual interest rate - EFFECT(nominal_rate, npery) = (1 + nominal_rate/npery)^npery - 1 |
| FV | Supported | Future value calculation |
| FVSCHEDULE | Supported | Future value using variable interest rate schedule |
| INTRATE | Supported | Interest rate for a fully invested security - INTRATE(settlement, maturity, investment, redemption, [basis]) |
| IPMT | Supported | Interest payment for a period |
| IRR | Supported | Internal rate of return using Newton-Raphson |
| ISPMT | Supported | Interest paid during a specific period - simple interest |
| MDURATION | Supported | Modified Macaulay duration for a bond with par value $100 |
| MIRR | Supported | Modified internal rate of return |
| NOMINAL | Supported | Nominal annual interest rate - NOMINAL(effect_rate, npery) = ((1 + effect_rate)^(1/npery) - 1) * npery |
| NPER | Supported | Number of periods calculation |
| NPV | Supported | Net present value |
| ODDFPRICE | Supported | Price per $100 face value of a security with an odd first coupon period - ODDFPRICE(settlement, maturity, issue, first_coupon, rate, yld, redemption, frequency, [basis]) |
| ODDFYIELD | Supported | Yield of a security with an odd first coupon period - ODDFYIELD(settlement, maturity, issue, first_coupon, rate, pr, redemption, frequency, [basis]) |
| ODDLPRICE | Supported | Price per $100 face value of a security with an odd last coupon period - ODDLPRICE(settlement, maturity, last_interest, rate, yld, redemption, frequency, [basis]) |
| ODDLYIELD | Supported | Yield of a security with an odd last coupon period - ODDLYIELD(settlement, maturity, last_interest, rate, pr, redemption, frequency, [basis]) |
| PMT | Supported | Loan payment calculation |
| PPMT | Supported | Principal payment for a period |
| PRICE | Supported | Price per $100 face value of a security that pays periodic interest - PRICE(settlement, maturity, rate, yld, redemption, frequency, [basis]) |
| PRICEMAT | Supported | Price per $100 face value of a security that pays interest at maturity - PRICEMAT(settlement, maturity, issue, rate, yld, [basis]) |
| PV | Supported | Present value calculation |
| RATE | Supported | Interest rate calculation using Newton-Raphson iteration |
| SLN | Supported | Straight-line depreciation |
| SYD | Supported | Sum-of-years-digits depreciation |
| TBILLEQ | Supported | Bond-equivalent yield for a Treasury bill - TBILLEQ(settlement, maturity, discount) |
| TBILLPRICE | Supported | Price per $100 face value for a Treasury bill - TBILLPRICE(settlement, maturity, discount) |
| TBILLYIELD | Supported | Yield for a Treasury bill - TBILLYIELD(settlement, maturity, pr) |
| VDB | Supported | Variable declining balance depreciation |
| XIRR | Supported | Internal rate of return for irregular cash flows - XIRR(values, dates, [guess]) |
| XNPV | Supported | Net present value for irregular cash flows - XNPV(rate, values, dates) |
| YIELD | Supported | Yield on a security that pays periodic interest (inverse of PRICE via Newton-Raphson) - YIELD(settlement, maturity, rate, pr, redemption, frequency, [basis]) |
| YIELDDISC | Supported | Annual yield for a discounted security - YIELDDISC(settlement, maturity, pr, redemption, [basis]) |
| YIELDMAT | Supported | Annual yield of a security that pays interest at maturity - YIELDMAT(settlement, maturity, issue, rate, pr, [basis]) |
Statistical62 shown · 62/62 supported
| Function | Status | Details |
|---|---|---|
| BETA.DIST | Supported | Beta distribution PDF (cumulative=FALSE) or CDF (cumulative=TRUE) on interval [A, B] |
| BETA.INV | Supported | Inverse beta distribution - returns x such that BETA.DIST(x, alpha, beta, TRUE, A, B) = probability |
| BETADIST | Supported | Beta distribution PDF (cumulative=FALSE) or CDF (cumulative=TRUE) on interval [A, B] |
| BETAINV | Supported | Inverse beta distribution - returns x such that BETA.DIST(x, alpha, beta, TRUE, A, B) = probability |
| BINOM.DIST | Supported | Binomial distribution PMF (C(n,k)*p^k*(1-p)^(n-k)) or CDF (P(X<=k)) - BINOM.DIST(number_s, trials, probability_s, cumulative) |
| BINOM.DIST.RANGE | Supported | Probability that number of successes falls in a range - BINOM.DIST.RANGE(trials, probability_s, number_s, [number_s2]) |
| BINOM.INV | Supported | Modern name for CRITBINOM - returns smallest k such that BINOM.DIST(k, trials, probability_s, TRUE) >= alpha |
| BINOMDIST | Supported | Legacy binomial distribution PMF (cumulative=FALSE) or CDF (cumulative=TRUE) - deprecated, use BINOM.DIST |
| CHIDIST | Supported | Chi-squared distribution right tail - returns P(X > x) = 1 - P(df/2, x/2) |
| CHIINV | Supported | Inverse chi-squared right-tail distribution - returns x such that CHIDIST(x, df) = probability |
| CHISQ.DIST | Supported | Chi-squared distribution CDF (cumulative=TRUE) or PDF (cumulative=FALSE) - CHISQ.DIST(x, deg_freedom, cumulative) |
| CHISQ.DIST.RT | Supported | Chi-squared distribution right tail - equivalent to 1 - CHISQ.DIST(x, deg_freedom, TRUE) |
| CHISQ.INV.RT | Supported | Inverse chi-squared right-tail distribution - returns x such that CHISQ.DIST.RT(x, df) = probability. Modern replacement for CHIINV. |
| CHISQ.TEST | Supported | Chi-squared test for independence (modern version of CHITEST) |
| CHITEST | Supported | Chi-squared test for independence - returns p-value comparing actual vs expected frequencies |
| CONFIDENCE | Supported | Confidence interval for population mean - NORM.S.INV(1-alpha/2) * (stdev/sqrt(size)) |
| CONFIDENCE.NORM | Supported | Confidence interval for population mean (modern name) - same as CONFIDENCE |
| CONFIDENCE.T | Supported | Confidence interval using t-distribution - T.INV.2T(alpha, n-1) * stdev / sqrt(n) |
| CORREL | Supported | Pearson correlation coefficient between two arrays - returns #DIV/0! if variance of either array is 0 or fewer than 2 valid pairs |
| COVAR | Supported | Legacy population covariance - equivalent to COVARIANCE.P, divides by n |
| COVARIANCE.P | Supported | Population covariance - divides by n |
| COVARIANCE.S | Supported | Sample covariance - divides by n-1 |
| CRITBINOM | Supported | Returns smallest k such that BINOM.DIST(k, trials, probability_s, TRUE) >= alpha - inverse binomial CDF |
| EXPON.DIST | Supported | Exponential distribution PDF (cumulative=FALSE) or CDF (cumulative=TRUE) - modern form of EXPONDIST |
| EXPONDIST | Supported | Exponential distribution PDF (cumulative=FALSE) or CDF (cumulative=TRUE) |
| F.DIST | Supported | F-distribution CDF (cumulative=TRUE) or PDF (cumulative=FALSE) - F.DIST(x, deg_freedom1, deg_freedom2, cumulative) |
| F.DIST.RT | Supported | F-distribution right tail probability - P(F > x) using regularized incomplete beta function |
| F.INV | Supported | Inverse of F-distribution CDF - returns x such that F.DIST(x, df1, df2, TRUE) = probability |
| F.INV.RT | Supported | Inverse of F-distribution right tail - returns x such that F.DIST.RT(x, df1, df2) = probability |
| F.TEST | Supported | F-test for variance equality - returns two-tailed p-value testing if two samples have equal variances |
| FDIST | Supported | Legacy F-distribution right tail probability - same as F.DIST.RT; FDIST(x, df1, df2) |
| FINV | Supported | Legacy inverse F-distribution right tail - same as F.INV.RT; returns x such that F.DIST.RT(x, df1, df2) = probability |
| FISHER | Supported | Fisher transformation: atanh(x) for -1 < x < 1; returns #NUM! if x <= -1 or x >= 1 |
| FISHERINV | Supported | Inverse Fisher transformation: tanh(y) for any real y |
| FORECAST.ETS | Supported | AAA Exponential Smoothing forecast - returns compile-time constant baseline value from executed spreadsheet |
| FORECAST.ETS.CONFINT | Supported | AAA Exponential Smoothing confidence interval - returns compile-time constant baseline value from executed spreadsheet |
| FORECAST.ETS.SEASONALITY | Supported | ETS seasonality detection - when invoked via _XLUDF.FORECAST.ETS.SEASONALITY returns #NAME? to match Excel behavior |
| FORECAST.ETS.STAT | Supported | ETS forecast statistics; when invoked via _XLUDF. prefix (as a UDF add-in) returns #NAME? to match Excel behavior |
| FTEST | Supported | Legacy name for F.TEST - F-test for variance equality, returns two-tailed p-value |
| GAMMA.DIST | Supported | Gamma distribution PDF or CDF - returns #NUM! if x < 0, alpha <= 0, or beta <= 0 |
| GAMMA.INV | Supported | Inverse gamma distribution - returns x such that GAMMA.DIST(x, alpha, beta, TRUE) = probability |
| GAMMAINV | Supported | Inverse gamma distribution - returns x such that GAMMA.DIST(x, alpha, beta, TRUE) = probability |
| GAMMALN | Supported | Natural logarithm of the gamma function - GAMMALN(x) = ln(Gamma(x)); returns #NUM! if x <= 0 |
| GAUSS | Supported | Returns probability between mean and z standard deviations - GAUSS(z) = NORM.S.DIST(z, TRUE) - 0.5 |
| GROWTH | Supported | Exponential regression: fits y=b*m^x model to known data and returns first predicted value; returns #NUM! if any known_y <= 0 |
| HYPGEOM.DIST | Supported | Hypergeometric distribution (Excel 2010+) - PMF or CDF; when invoked via _XLUDF.HYPGEOM.DIST computes normally |
| HYPGEOMDIST | Supported | Hypergeometric distribution - P(X=k) = C(K,k)*C(N-K,n-k)/C(N,n) |
| INTERCEPT | Supported | Y-intercept of linear regression line - INTERCEPT(known_y's, known_x's); returns #DIV/0! if variance of x is 0 or fewer than 2 pairs |
| NORM.INV | Supported | Inverse of normal cumulative distribution - NORM.INV(probability, mean, standard_dev); modern name for NORMINV |
| NORM.S.DIST | Supported | Standard normal cumulative distribution (cumulative=TRUE) or PDF (cumulative=FALSE) |
| NORMINV | Supported | Inverse of normal cumulative distribution - NORMINV(probability, mean, standard_dev); legacy name for NORM.INV |
| NORMSDIST | Supported | Legacy standard normal CDF - NORMSDIST(z) = NORM.S.DIST(z, TRUE) |
| PEARSON | Supported | Pearson correlation coefficient - identical to CORREL |
| POISSON | Supported | Legacy Poisson distribution PMF (cumulative=FALSE) or CDF (cumulative=TRUE) - deprecated, use POISSON.DIST |
| POISSON.DIST | Supported | Poisson distribution PMF (cumulative=FALSE: e^(-λ)*λ^x/x!) or CDF (cumulative=TRUE: sum of PMF up to x) |
| PROB | Supported | Returns probability that values in x_range fall between lower and upper limits - PROB(x_range, prob_range, lower_limit, [upper_limit]) |
| RSQ | Supported | R-squared (coefficient of determination) of linear regression - RSQ(known_y's, known_x's); returns #DIV/0! if variance of x or y is 0 |
| SLOPE | Supported | Slope of linear regression line - SLOPE(known_y's, known_x's); returns #DIV/0! if variance of x is 0 or fewer than 2 pairs |
| STANDARDIZE | Supported | Returns a normalized value (z-score) - STANDARDIZE(x, mean, standard_dev) = (x - mean) / standard_dev; returns #NUM! if standard_dev <= 0 |
| STEYX | Supported | Standard error of predicted y-value in linear regression - STEYX(known_y's, known_x's); returns #DIV/0! if fewer than 3 pairs |
| T.INV.2T | Supported | Two-tailed inverse t-distribution - returns t such that P(|T| > t) = probability |
| TREND | Supported | Linear regression: fits y=mx+b model to known data and returns first predicted value for single-cell context |
Engineering29 shown · 29/29 supported
| Function | Status | Details |
|---|---|---|
| BASE | Supported | Converts number to text in given base (radix 2-36), optional min_length for padding |
| BESSELI | Supported | Modified Bessel function of the first kind I_n(x) |
| BESSELJ | Supported | Bessel function of the first kind J_n(x) |
| BESSELK | Supported | Modified Bessel function of the second kind K_n(x) |
| BESSELY | Supported | Bessel function of the second kind Y_n(x) |
| BIN2DEC | Supported | Binary to decimal - 10 bits max, two's complement for negatives |
| BIN2HEX | Supported | Binary to hexadecimal - 10 bits max, optional places parameter |
| BIN2OCT | Supported | Binary to octal - 10 bits max, optional places parameter |
| BITAND | Supported | Bitwise AND of two integers |
| BITLSHIFT | Supported | Left shift number by shift_amount bits |
| BITOR | Supported | Bitwise OR of two integers |
| BITRSHIFT | Supported | Right shift number by shift_amount bits |
| BITXOR | Supported | Bitwise XOR of two integers |
| DEC2BIN | Supported | Decimal to binary - range -512 to 511, optional places parameter |
| DEC2HEX | Supported | Decimal to hexadecimal - range -549755813888 to 549755813887, optional places parameter |
| DEC2OCT | Supported | Decimal to octal - range -536870912 to 536870911, optional places parameter |
| DECIMAL | Supported | Converts text representation of number in given base (radix 2-36) to decimal - inverse of BASE |
| DELTA | Supported | Tests whether two values are equal (Kronecker delta) |
| ERF | Supported | Error function integrated between limits - supports 1 or 2 arguments |
| ERF.PRECISE | Supported | Error function integrated from 0 to x - equivalent to ERF(x) |
| ERFC | Supported | Complementary error function: 1 - ERF(x) |
| ERFC.PRECISE | Supported | Complementary error function: 1 - ERF(x), same as ERFC(x) |
| GESTEP | Supported | Returns 1 if number >= step, 0 otherwise (step defaults to 0) |
| HEX2BIN | Supported | Hexadecimal to binary - limited range, optional places parameter |
| HEX2DEC | Supported | Hexadecimal to decimal - 10 hex chars max, two's complement for negatives |
| HEX2OCT | Supported | Hexadecimal to octal - limited range, optional places parameter |
| OCT2BIN | Supported | Octal to binary - limited range, optional places parameter |
| OCT2DEC | Supported | Octal to decimal - 10 octal chars max, two's complement for negatives |
| OCT2HEX | Supported | Octal to hexadecimal - 10 octal chars max, optional places parameter |
Dynamic Arrays21 shown · 21/21 supported
| Function | Status | Details |
|---|---|---|
| ANCHORARRAY | Supported | References the spill range anchored at a cell - internal dynamic array operator |
| CHOOSECOLS | Supported | Select specific columns from an array - supports negative indices for right-to-left |
| CHOOSEROWS | Supported | Select specific rows from an array - supports negative indices for bottom-to-top |
| DROP | Supported | Drop rows/cols from start or end of array - when invoked via _XLUDF.DROP returns #NAME? to match Excel behavior |
| EXPAND | Supported | Expand an array to specified row/column dimensions, padding with a value (default #N/A) |
| FILTER | Supported | Filter a range based on criteria |
| FREQUENCY | Supported | Calculates frequency distribution - returns array with n+1 elements for n bins |
| HSTACK | Supported | Horizontally stack arrays - when invoked via _XLUDF.HSTACK returns #NAME? to match Excel behavior |
| IMPLICIT | Supported | Implicit intersection operator (@) - gets single value from range |
| SEQUENCE | Supported | Generate a sequence of numbers - supports rows, cols, start, step parameters |
| SORT | Supported | Sort a range or array |
| SORTBY | Supported | Sort a range by another range |
| SPILL | Supported | Spill range operator (#) - references entire spill range |
| TAKE | Supported | Take rows/cols from start or end of array - when invoked via _XLUDF.TAKE returns #NAME? to match Excel behavior |
| TEXTSPLIT | Supported | Split text by column and/or row delimiters into a spill array |
| TOCOL | Supported | Convert array to a single column - when invoked via _XLUDF.TOCOL returns #NAME? to match Excel behavior |
| TOROW | Supported | Convert array to a single row - when invoked via _XLUDF.TOROW returns #NAME? to match Excel behavior |
| UNIQUE | Supported | Extract unique values from a range |
| VSTACK | Supported | Vertically stack arrays - appends arrays row-by-row; anchor cell returns first element |
| WRAPCOLS | Supported | Wrap vector into columns - when invoked via _XLUDF.WRAPCOLS returns #NAME? to match Excel behavior |
| WRAPROWS | Supported | Wrap vector into rows - when invoked via _XLUDF.WRAPROWS returns #NAME? to match Excel behavior |
LAMBDA Functions10 shown · 10/10 supported
| Function | Status | Details |
|---|---|---|
| BYCOL | Supported | Apply LAMBDA to each column of array |
| BYROW | Supported | Apply LAMBDA to each row of array |
| ISOMITTED | Supported | Returns TRUE if a LAMBDA parameter was omitted - resolved at compile time via param substitution |
| LAMBDA | Supported | User-defined function with parameters - translated to Rust closure |
| LET | Supported | Assign names to calculation results for reuse within a formula - compiled to Rust let bindings |
| MAKEARRAY | Supported | Generate array from LAMBDA(row, col) |
| MAP | Supported | Apply LAMBDA to each element of array(s) |
| ME | Supported | Self-reference keyword inside recursive LAMBDA - refers to the containing LAMBDA for recursion |
| REDUCE | Supported | Reduce array to single value with accumulator LAMBDA |
| SCAN | Supported | Like REDUCE but returns intermediate values array |
Complex26 shown · 26/26 supported
| Function | Status | Details |
|---|---|---|
| COMPLEX | Supported | Creates complex number string from real and imaginary parts |
| IMABS | Supported | Returns absolute value (modulus) of complex number |
| IMAGINARY | Supported | Returns imaginary coefficient of complex number |
| IMARGUMENT | Supported | Returns argument (theta) of complex number in radians |
| IMCONJUGATE | Supported | Returns complex conjugate |
| IMCOS | Supported | Returns cosine of complex number |
| IMCOSH | Supported | Returns hyperbolic cosine of complex number |
| IMCOT | Supported | Returns cotangent of complex number |
| IMCSC | Supported | Returns cosecant of complex number |
| IMCSCH | Supported | Returns hyperbolic cosecant of complex number |
| IMDIV | Supported | Returns quotient of complex numbers |
| IMEXP | Supported | Returns exponential of complex number using Euler's formula |
| IMLN | Supported | Returns natural logarithm of complex number |
| IMLOG10 | Supported | Returns base-10 logarithm of complex number |
| IMLOG2 | Supported | Returns base-2 logarithm of complex number |
| IMPOWER | Supported | Returns complex number raised to a power |
| IMPRODUCT | Supported | Returns product of complex numbers |
| IMREAL | Supported | Returns real coefficient of complex number |
| IMSEC | Supported | Returns secant of complex number |
| IMSECH | Supported | Returns hyperbolic secant of complex number |
| IMSIN | Supported | Returns sine of complex number |
| IMSINH | Supported | Returns hyperbolic sine of complex number |
| IMSQRT | Supported | Returns square root of complex number |
| IMSUB | Supported | Returns difference of complex numbers |
| IMSUM | Supported | Returns sum of complex numbers |
| IMTAN | Supported | Returns tangent of complex number |
Matrix5 shown · 5/5 supported
| Function | Status | Details |
|---|---|---|
| MDETERM | Supported | Matrix determinant - returns scalar determinant of square matrix |
| MINVERSE | Supported | Matrix inverse - returns first element of inverse matrix for single-cell context |
| MMULT | Supported | Matrix multiplication - returns first element of product matrix for single-cell context |
| MUNIT | Supported | Identity matrix - returns 1.0 for first element (diagonal) in single-cell context |
| TRANSPOSE | Supported | Matrix transpose - returns first element of transposed matrix for single-cell context |
Array1 shown · 1/1 supported
| Function | Status | Details |
|---|---|---|
| SUMPRODUCT | Supported | Multiply corresponding elements and sum the products - requires static ranges |
Database10 shown · 10/10 supported
| Function | Status | Details |
|---|---|---|
| DAVERAGE | Supported | Average of database field values matching criteria - DAVERAGE(database, field, criteria) |
| DCOUNT | Supported | Count numeric database field values matching criteria - DCOUNT(database, field, criteria) |
| DCOUNTA | Supported | Count non-empty database field values matching criteria - DCOUNTA(database, field, criteria) |
| DGET | Supported | Single value from database field matching criteria - DGET(database, field, criteria) |
| DMAX | Supported | Maximum value from database field matching criteria - DMAX(database, field, criteria) |
| DMIN | Supported | Minimum value from database field matching criteria - DMIN(database, field, criteria) |
| DPRODUCT | Supported | Product of values from database field matching criteria - DPRODUCT(database, field, criteria) |
| DSTDEV | Supported | Sample standard deviation of database field values matching criteria - DSTDEV(database, field, criteria) |
| DSUM | Supported | Sum database field values matching criteria - DSUM(database, field, criteria) |
| DVAR | Supported | Sample variance of database field values matching criteria - DVAR(database, field, criteria) |
Cube7 shown · 7/7 supported
| Function | Status | Details |
|---|---|---|
| CUBEKPIMEMBER | Supported | OLAP cube KPI property - returns #N/A without live cube connection |
| CUBEMEMBER | Supported | OLAP cube member or tuple - returns #N/A without live cube connection |
| CUBEMEMBERPROPERTY | Supported | OLAP cube member property value - returns #N/A without live cube connection |
| CUBERANKEDMEMBER | Supported | OLAP cube ranked member - returns #N/A without live cube connection |
| CUBESET | Supported | OLAP cube calculated set - returns #N/A without live cube connection |
| CUBESETCOUNT | Supported | OLAP cube set item count - returns #N/A without live cube connection |
| CUBEVALUE | Supported | OLAP cube aggregated value - returns #N/A without live cube connection |
External1 shown · 1/1 supported
| Function | Status | Details |
|---|---|---|
| RTD | Supported | Real-Time Data - returns #N/A when COM server unavailable (always in compiled context) |
XML1 shown · 1/1 supported
| Function | Status | Details |
|---|---|---|
| FILTERXML | Supported | Extracts values from XML using XPath - Windows-only in Excel, returns #NAME? on non-Windows platforms |
Information1 shown · 1/1 supported
| Function | Status | Details |
|---|---|---|
| ISFORMULA | Supported | Returns TRUE if cell contains formula; when called via _XLUDF. prefix returns #NAME? |
Internal2 shown · 2/2 supported
| Function | Status | Details |
|---|---|---|
| ARRAY | Supported | Internal array constant representation for {1,2,3} syntax |
| BYPASS | Supported | Internal wrapper function - just passes through its argument |
Uncategorized78 shown · 0/78 supported
| Function | Status | Details |
|---|---|---|
| CALL | Blocked | Calls external DLL functions - not available in compiled context |
| CHISQ.INV | Not Yet Supported | — |
| COPILOT | Blocked | Requires live connection to Microsoft Copilot AI service |
| DETECTLANGUAGE | Blocked | Requires external Microsoft Translation Services API |
| DSTDEVP | Not Yet Supported | — |
| DVARP | Not Yet Supported | — |
| EUROCONVERT | Not Yet Supported | — |
| FIELDVALUE | Not Yet Supported | — |
| FORECAST | Blocked | Legacy forecast function requiring linear regression model fitting |
| FORECAST.LINEAR | Blocked | Requires linear regression model fitting across dynamic ranges |
| GAMMA | Not Yet Supported | — |
| GAMMADIST | Not Yet Supported | — |
| GAMMALN.PRECISE | Not Yet Supported | — |
| GROUPBY | Not Yet Supported | — |
| IMAGE | Blocked | Requires fetching images from URLs at runtime |
| INFO | Blocked | Returns system/environment information that doesn't exist in compiled context |
| LINEST | Not Yet Supported | — |
| LOGEST | Not Yet Supported | — |
| LOGINV | Not Yet Supported | — |
| LOGNORM.DIST | Not Yet Supported | — |
| LOGNORM.INV | Not Yet Supported | — |
| LOGNORMDIST | Not Yet Supported | — |
| MODE.MULT | Not Yet Supported | — |
| MODE.SNGL | Not Yet Supported | — |
| MULTINOMIAL | Not Yet Supported | — |
| NEGBINOM.DIST | Not Yet Supported | — |
| NEGBINOMDIST | Not Yet Supported | — |
| NORM.DIST | Not Yet Supported | — |
| NORM.S.INV | Not Yet Supported | — |
| NORMDIST | Not Yet Supported | — |
| NORMSINV | Not Yet Supported | — |
| PDURATION | Not Yet Supported | — |
| PERCENTILE.EXC | Not Yet Supported | — |
| PERCENTILE.INC | Not Yet Supported | — |
| PERCENTOF | Not Yet Supported | — |
| PERCENTRANK.EXC | Not Yet Supported | — |
| PHI | Not Yet Supported | — |
| PHONETIC | Not Yet Supported | — |
| PIVOTBY | Blocked | Requires PivotTable-like grouping/aggregation infrastructure not available in compiled context |
| PRICEDISC | Not Yet Supported | — |
| PY | Not Yet Supported | — |
| QUARTILE.EXC | Not Yet Supported | — |
| QUARTILE.INC | Not Yet Supported | — |
| RANDARRAY | Blocked | Non-deterministic - produces random arrays that differ on each evaluation |
| RANK.AVG | Not Yet Supported | — |
| RECEIVED | Not Yet Supported | — |
| REGEXEXTRACT | Not Yet Supported | — |
| REGEXREPLACE | Not Yet Supported | — |
| REGEXTEST | Not Yet Supported | — |
| REGISTER.ID | Blocked | Returns DLL function registration ID - not available in compiled context |
| RRI | Not Yet Supported | — |
| SERIESSUM | Not Yet Supported | — |
| SHEET | Not Yet Supported | — |
| SHEETS | Not Yet Supported | — |
| SINGLE | Blocked | Implicit intersection operator internals - handled by IMPLICIT pseudo-function |
| SQL.REQUEST | Blocked | Requires live ODBC database connection |
| SQRTPI | Not Yet Supported | — |
| STOCKHISTORY | Blocked | Requires live connection to financial data service |
| T.DIST | Not Yet Supported | — |
| T.DIST.2T | Not Yet Supported | — |
| T.DIST.RT | Not Yet Supported | — |
| T.INV | Not Yet Supported | — |
| T.TEST | Not Yet Supported | — |
| TABLE | Blocked | Data table function for what-if analysis - requires Excel's recalculation engine |
| TDIST | Not Yet Supported | — |
| TEXTAFTER | Not Yet Supported | — |
| TEXTBEFORE | Not Yet Supported | — |
| TINV | Not Yet Supported | — |
| TRANSLATE | Blocked | Requires external Microsoft Translation Services API |
| TRIMRANGE | Not Yet Supported | — |
| TTEST | Not Yet Supported | — |
| UNICODE | Not Yet Supported | — |
| VALUETOTEXT | Not Yet Supported | — |
| WEBSERVICE | Blocked | Requires live HTTP requests to external web services |
| WEIBULL | Not Yet Supported | — |
| WEIBULL.DIST | Not Yet Supported | — |
| Z.TEST | Not Yet Supported | — |
| ZTEST | Not Yet Supported | — |
Why Some Functions Aren't Supported
Non-deterministic Functions
Functions that produce different results each time they're evaluated.
Compiled outputs must be deterministic and reproducible. Random functions would produce different results in the compiled binary vs Excel, making validation impossible. Note: RAND and RANDBETWEEN are supported using baseline values captured from the original spreadsheet.
External Data / API Functions
Functions that require live connections to external services, databases, or the internet.
Compiled binaries run offline without network access or external service connections. These functions fundamentally depend on real-time data retrieval that cannot be replicated in a static compiled context.
OLAP / Cube Functions
Functions that query external OLAP data sources (e.g., SQL Server Analysis Services).
These functions require a live connection to an OLAP cube, execute MDX queries, and return aggregated values that depend on the external database state. They always return #N/A in compiled context, and IFERROR/IFNA wrappers in formulas handle this correctly.
PivotTable Functions
Functions that query PivotTable data structures at runtime.
PivotTables are dynamic Excel constructs computed at runtime that can be filtered, expanded, and collapsed interactively. Statically compiling structure-based queries would require parsing PivotTable definitions and implementing the full aggregation engine. Note: GETPIVOTDATA is supported using baseline values.
Complex Statistical Models
Functions requiring iterative numerical solvers or complete statistical framework implementations.
These require implementing state-space models with iterative optimization of multiple parameters, seasonality detection, and confidence interval calculations. The AAA (Additive Error, Additive Trend, Additive Seasonality) Exponential Smoothing model used by FORECAST.ETS is impractical to replicate correctly.
System / Meta Functions
Functions that query Excel's runtime environment or operating system.
These return information about the running Excel instance, installed add-ins, DLL registrations, or system configuration — none of which exist in a compiled context.
Feature Support
Spreadsheet Features & Capabilities22 features
| Feature | Status | Notes |
|---|---|---|
| Cell references (A1, $A$1) | Supported | Absolute and relative references fully compiled |
| Cross-sheet references (Sheet1!A1) | Supported | References across sheets resolved at compile time |
| 3D references (Sheet1:Sheet3!A1) | Supported | Multi-sheet range references compiled to native code |
| Named ranges | Supported | Resolved at compile time to their target ranges |
| LAMBDA functions | Supported | User-defined LAMBDAs compiled to native closures |
| Named LAMBDA functions | Supported | Named LAMBDAs from Name Manager compiled as first-class native functions |
| Dynamic arrays (spill ranges) | Supported | SORT, FILTER, UNIQUE and other spill functions supported |
| Implicit intersection (@) | Supported | The @ operator is handled during compilation |
| LET bindings | Supported | LET expressions compiled to native variable bindings |
| Array constants ({1,2,3}) | Supported | Inline array literals compiled to native array constants |
| Structured table references | Supported | Table[Column] syntax resolved at compile time |
| R1C1 reference style | Supported | Converted to A1 style during parsing |
| Circular references | Not Supported | Requires iterative solver; cells in cycles are not compiled |
| Convergence detection | Not Supported | Related to circular references — Excel's iterative calculation engine is not replicated |
| Volatile functions (NOW, TODAY) | Partial | Supported using a reference timestamp from the original spreadsheet for deterministic output |
| INDIRECT with dynamic strings | Partial | Supported when the target can be resolved at compile time; dynamic runtime lookup for others |
| OFFSET with dynamic args | Partial | Supported when arguments are constants; rejected when arguments are computed at runtime |
| Conditional formatting | N/A | Visual-only feature — no computational output to compile |
| Data validation | N/A | Input constraint feature — not part of formula evaluation |
| Charts and graphs | N/A | Visual elements — not part of formula computation |
| Macros (VBA) | Not Supported | VBA macros are a separate runtime; not compiled |
| External workbook links | Not Supported | References to other .xlsx files are not resolved; values from last-saved state may be used |