Formula

Formulas are one of the core capabilities provided by Univer, allowing you to use formulas in cells to calculate values. The functions supported by formulas are consistent with Excel, including mathematical, logical, text, date functions, and more.

If a workbook contains a large number of formulas, formula calculation may occupy the main thread and make the page less responsive. We recommend running formula calculation in a Worker process to reduce its impact on rendering and user interaction. For configuration details, see Web Workers.

Configuration

Following are the links to the configuration items related to the formula plugin:

PluginConfiguration Item
@univerjs/engine-formulaIUniverEngineFormulaConfig
@univerjs/sheets-formulaIUniverSheetsFormulaBaseConfig

Presets Configuration

TypeScript
import type { CalculationMode } from '@univerjs/preset-sheets-core'import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'interface IUniverSheetsCorePresetConfig {  formula?: {    // Custom formula functions    function?: Array<[Ctor<BaseFunction>, IFunctionNames]>    // Custom formula descriptions    description?: IFunctionInfo[]    // Defines the calculation mode for formulas during data initialization, default is `WHEN_EMPTY`    initialFormulaComputing?: CalculationMode  }}

Plugin Configuration

TypeScript
import type { CalculationMode } from '@univerjs/sheets-formula'import { UniverSheetsFormulaPlugin } from '@univerjs/sheets-formula'interface IUniverSheetsFormulaConfig {  // Custom formula functions  function?: Array<[Ctor<BaseFunction>, IFunctionNames]>  // Custom formula descriptions  description?: IFunctionInfo[]  // Defines the calculation mode for formulas during data initialization, default is `WHEN_EMPTY`  initialFormulaComputing?: CalculationMode}

The definition of CalculationMode is as follows:

TypeScript
enum CalculationMode {  /**   * Force calculation of all formulas   */  FORCED,  /**   * Partial calculation, only calculates cells with formulas but no value   */  WHEN_EMPTY,  /**   * No calculation for all formulas   */  NO_CALCULATION,}

If the cell containing the formula has an unexpected value, you can set initialFormulaComputing to CalculationMode.FORCED to force the calculation of all formulas. Alternatively, you can clear the cell's v value before initialization.

Cross-workbook references

A cross-workbook formula reads data from another workbook, for example to summarize sales from Sales.xlsx in Report. Unlike a reference to another worksheet in the same workbook, it also identifies the source workbook.

Reference syntax

ScenarioExampleMeaning
Another sheet in the same workbook=SUM(Data!A1:A10)Cells in the current workbook's Data sheet
A range in another workbook=SUM('[Sales.xlsx]Data'!A1:A10)Cells in the Data sheet of Sales.xlsx
A table in another workbook=SUM(Sales.xlsx!SalesTable[Amount])The Amount column of an existing SalesTable table in the source workbook

Sales.xlsx is a workbook name, not a file path or download URL. Writing a formula does not read a file, download an Excel workbook, or connect to an editor in another browser page. Create the corresponding table before using a structured table reference.

Reference workbooks loaded in the same instance

With the core formula engine, load both workbooks into the same Univer instance and formula calculation environment. Run this example after initializing Sheets. In plugin mode, also import the Facade extensions described on this page.

TypeScript
const source = univerAPI.createWorkbook({  id: 'sales-workbook',  name: 'Sales.xlsx',  sheetOrder: ['sales-data'],  sheets: {    'sales-data': {      id: 'sales-data',      name: 'Data',      rowCount: 100,      columnCount: 20,      cellData: {        0: { 0: { v: 100 } },        1: { 0: { v: 200 } },      },    },  },}, { makeCurrent: false })const report = univerAPI.createWorkbook({ id: 'report-workbook', name: 'Report' })const resultCell = report.getActiveSheet().getRange('A1')resultCell.setFormula("=SUM('[Sales.xlsx]Data'!A1:A2)")const formula = univerAPI.getFormula()formula.executeCalculation()await formula.onCalculationResultApplied()console.log(resultCell.getValue()) // 300

makeCurrent: false loads the source without making it the current workbook. Keeping explicit source and report handles avoids writing formulas to the wrong workbook after the active workbook changes.

Names are matched case-insensitively. A full-name match takes precedence; otherwise, matching ignores common Excel extensions such as .xlsx and .xlsm. Missing or ambiguous names return #REF!. Use a unique, explicit source name.

Bind a reference to a stable source ID

Use the reference-binding APIs from @univerjs-pro/engine-formula when your application needs to associate a formula name with a stable document ID. This is a Pro extension: configure a client license, replace UniverFormulaEnginePlugin with UniverProFormulaEnginePlugin during initialization, and import the Pro Facade. Do not register both formula engines. Importing the Facade alone does not register the plugin.

The following example reuses the workbooks above in an environment configured with the Pro engine:

TypeScript
import '@univerjs-pro/engine-formula/facade'const reference = univerAPI.getFormula().buildReference({  hostUnitId: report.getId(),  unit: {    unitId: source.getId(),    formulaQualifier: 'Sales Source',  },  target: {    kind: univerAPI.Enum.FormulaReferenceType.SHEET_RANGE,    sheetName: 'Data',    range: { startRow: 0, endRow: 1, startColumn: 0, endColumn: 0 },  },})resultCell.setFormula(`=SUM(${reference})`)

hostUnitId identifies the workbook containing the formula. unit.unitId is the stable source workbook ID, and formulaQualifier is its public name in formula text. Range coordinates are zero-based and inclusive.

buildReference() returns a reference fragment without = and persists the cross-workbook binding. It neither loads the source nor starts calculation. Source data must still be available from a workbook loaded into the calculation environment or a configured data provider.

For hand-written or application-generated formula text, bind the source before writing the formula:

TypeScript
const formula = univerAPI.getFormula()const bound = formula.upsertExternalReference({  unitId: report.getId(),  qualifier: 'Sales Source',  sourceUnitId: source.getId(),  sourceUnitType: univerAPI.Enum.UniverInstanceType.UNIVER_SHEET,})if (!bound) throw new Error('Could not bind Sales Source')resultCell.setFormula("=SUM('[Sales Source]Data'!A1:A2)")

Repeating an identical binding in the same workbook is an idempotent operation. Pass qualifier without brackets or quotes. Do not use positive integers such as 1 or 2: Excel reserves these for external-link slots, not application document IDs. Imported Excel external links also require their link resources; copying formula text alone is insufficient.

Update, save, and unload

After changing source data through the Facade, explicitly calculate and wait for results to be applied before reading the target. Do not assume asynchronous calculation has finished immediately after setFormula() or setValue().

TypeScript
const sourceSheet = source.getSheetBySheetId('sales-data')if (!sourceSheet) throw new Error('Source sheet not found')sourceSheet.getRange('A1').setValue(150)formula.executeCalculation()await formula.onCalculationResultApplied()console.log(resultCell.getValue()) // 350

Save the target with report.save() to preserve the complete snapshot, including its reference-binding resources. Saving only cell formula text loses the mapping between public names and source IDs. Save and load source workbook data separately.

After a source workbook is unloaded, ordinary loaded-workbook references can no longer read it. Pro external references can continue calculating only when the configured data providers and available caches supply the necessary data. A binding does not contain source data or guarantee offline calculation. A previously displayed result is not proof of current data.

Remove a Pro binding when it is no longer needed:

TypeScript
univerAPI.getFormula().removeExternalReference({  unitId: report.getId(),  qualifier: 'Sales Source',})

Removing a binding does not delete or rewrite existing formulas. The next calculation resolves their names again. A matching loaded workbook may still resolve by name; otherwise, the reference returns #REF!. Also change or clear the cell formulas if you intend to stop referencing the source.

See the FFormula reference-binding APIs for full parameters and return values.

3D references

A 3D reference spans consecutive worksheets within a workbook. This is separate from referencing another workbook:

text
=SUM(Jan:Mar!B2:C3)=SUM('Jan':'Mar'!B2)

The range includes Jan, Mar, and every sheet between them in workbook order, not alphabetical order. Check the intended aggregation range when reordering sheets.

Supported Formula Functions

Functions - (528)
ARRAY_CONSTRAINConstrains an array result to a specified size.
FLATTENFlattens all the values from one or more ranges into a single column.
BETADISTReturns the cumulative beta probability density function. The beta distribution is commonly used to study variation in the percentage of something across samples, such as the fraction of the day people spend watching television.
BETAINVReturns the inverse of the cumulative beta probability density function for a specified beta distribution. That is, if probability = BETADIST(x,...), then BETAINV(probability,...) = x. The beta distribution can be used in project planning to model probable completion times given an expected completion time and variability.
BINOMDISTReturns the individual term binomial distribution probability. Use BINOMDIST in problems with a fixed number of tests or trials, when the outcomes of any trial are only success or failure, when trials are independent, and when the probability of success is constant throughout the experiment. For example, BINOMDIST can calculate the probability that two of the next three babies born are male.
CHIDISTReturns the right-tailed probability of the chi-squared distribution. The χ2 distribution is associated with a χ2 test. Use the χ2 test to compare observed and expected values. For example, a genetic experiment might hypothesize that the next generation of plants will exhibit a certain set of colors. By comparing the observed results with the expected ones, you can decide whether your original hypothesis is valid.
CHIINVReturns the inverse of the right-tailed probability of the chi-squared distribution. If probability = CHIDIST(x,...), then CHIINV(probability,...) = x. Use this function to compare observed results with expected ones in order to decide whether your original hypothesis is valid.
CHITESTReturns the test for independence. CHITEST returns the value from the chi-squared (χ2) distribution for the statistic and the appropriate degrees of freedom. You can use χ2 tests to determine whether hypothesized results are verified by an experiment.
CONFIDENCEReturns the confidence interval for a population mean, using a normal distribution.
COVARReturns covariance, the average of the products of deviations for each data point pair in two data sets.
CRITBINOMReturns the smallest value for which the cumulative binomial distribution is greater than or equal to a criterion value. Use this function for quality assurance applications. For example, use CRITBINOM to determine the greatest number of defective parts that are allowed to come off an assembly line run without rejecting the entire lot.
EXPONDISTReturns the exponential distribution. Use EXPONDIST to model the time between events, such as how long an automated bank teller takes to deliver cash. For example, you can use EXPONDIST to determine the probability that the process takes at most 1 minute.
FDISTReturns the (right-tailed) F probability distribution (degree of diversity) for two data sets. You can use this function to determine whether two data sets have different degrees of diversity. For example, you can examine the test scores of men and women entering high school and determine if the variability in the females is different from that found in the males.
FINVReturns the inverse of the (right-tailed) F probability distribution. If p = FDIST(x,...), then FINV(p,...) = x.
FTESTReturns the result of an F-test. An F-test returns the two-tailed probability that the variances in array1 and array2 are not significantly different. Use this function to determine whether two samples have different variances. For example, given test scores from public and private schools, you can test whether these schools have different levels of test score diversity.
GAMMADISTReturns the gamma distribution. You can use this function to study variables that may have a skewed distribution. The gamma distribution is commonly used in queuing analysis.
GAMMAINVReturns the inverse of the gamma cumulative distribution. If p = GAMMADIST(x,...), then GAMMAINV(p,...) = x. You can use this function to study a variable whose distribution may be skewed.
HYPGEOMDISTReturns the hypergeometric distribution. HYPGEOMDIST returns the probability of a given number of sample successes, given the sample size, population successes, and population size. Use HYPGEOMDIST for problems with a finite population, where each observation is either a success or a failure, and where each subset of a given size is chosen with equal likelihood.
LOGINVReturns the inverse of the lognormal cumulative distribution function of x, where ln(x) is normally distributed with parameters mean and standard_dev. If p = LOGNORMDIST(x,...) then LOGINV(p,...) = x.
LOGNORMDISTReturns the cumulative lognormal distribution of x, where ln(x) is normally distributed with parameters mean and standard_dev. Use this function to analyze data that has been logarithmically transformed.
MODELet's say you want to find out the most common number of bird species sighted in a sample of bird counts at a critical wetland over a 30-year time period, or you want to find out the most frequently occurring number of phone calls at a telephone support center during off-peak hours. To calculate the mode of a group of numbers, use the MODE function.
NEGBINOMDISTReturns the negative binomial distribution. NEGBINOMDIST returns the probability that there will be number_f failures before the number_s-th success, when the constant probability of a success is probability_s. This function is similar to the binomial distribution, except that the number of successes is fixed, and the number of trials is variable. Like the binomial, trials are assumed to be independent.
NORMDISTThe NORMDIST function returns the normal distribution for the specified mean and standard deviation. This function has a wide range of applications in statistics, including hypothesis testing.
NORMINVReturns the inverse of the normal cumulative distribution for the specified mean and standard deviation.
NORMSDISTReturns the standard normal cumulative distribution function. The distribution has a mean of 0 (zero) and a standard deviation of one. Use this function in place of a table of standard normal curve areas.
NORMSINVReturns the inverse of the standard normal cumulative distribution. The distribution has a mean of zero and a standard deviation of one.
PERCENTILEReturns the k-th percentile of values in a range. You can use this function to establish a threshold of acceptance. For example, you can decide to examine candidates who score above the 90th percentile.
PERCENTRANKThe PERCENTRANK function returns the rank of a value in a dataset as a percentage of the dataset -- essentially, the relative standing of a value within the whole dataset. For example, you could use PERCENTRANK to determine the standing of an individual's test score among the field of all scores for the same test.
POISSONReturns the Poisson distribution. A common application of the Poisson distribution is predicting the number of events over a specific time, such as the number of cars arriving at a toll plaza in 1 minute.
QUARTILEReturns the quartile of a data set. Quartiles often are used in sales and survey data to divide populations into groups. For example, you can use QUARTILE to find the top 25 percent of incomes in a population.
RANKReturns the rank of a number in a list of numbers. The rank of a number is its size relative to other values in a list. (If you were to sort the list, the rank of the number would be its position.)
STDEVEstimates standard deviation based on a sample. The standard deviation is a measure of how widely values are dispersed from the average value (the mean).
STDEVPCalculates standard deviation based on the entire population given as arguments. The standard deviation is a measure of how widely values are dispersed from the average value (the mean).
TDISTReturns the Percentage Points (probability) for the Student t-distribution where a numeric value (x) is a calculated value of t for which the Percentage Points are to be computed. The t-distribution is used in the hypothesis testing of small sample data sets. Use this function in place of a table of critical values for the t-distribution.
TINVReturns the two-tailed inverse of the Student's t-distribution.
TTESTReturns the probability associated with a Student's t-Test. Use TTEST to determine whether two samples are likely to have come from the same two underlying populations that have the same mean.
VAREstimates variance based on a sample.
VARPCalculates variance based on the entire population.
WEIBULLReturns the Weibull distribution. Use this distribution in reliability analysis, such as calculating a device's mean time to failure.
ZTESTReturns the one-tailed probability-value of a z-test. For a given hypothesized population mean, μ0, ZTEST returns the probability that the sample mean would be greater than the average of observations in the data set (array) — that is, the observed sample mean.
CUBEKPIMEMBERReturns a key performance indicator (KPI) property and displays the KPI name in the cell. A KPI is a quantifiable measurement, such as monthly gross profit or quarterly employee turnover, that is used to monitor an organization's performance.
CUBEMEMBERReturns a member or tuple from the cube. Use to validate that the member or tuple exists in the cube.
CUBEMEMBERPROPERTYThe CUBEMEMBERPROPERTY function, one of the Cube functions in Excel, returns the value of a member property from a cube. Use it to validate that a member name exists within the cube, and to return the specified property for this member.
CUBERANKEDMEMBERReturns the nth, or ranked, member in a set. Use to return one or more elements in a set, such as the top sales performer or the top 10 students.
CUBESETDefines a calculated set of members or tuples by sending a set expression to the cube on the server, which creates the set, and then returns that set to Microsoft Excel.
CUBESETCOUNTReturns the number of items in a set.
CUBEVALUEReturns an aggregated value from the cube.
DAVERAGEAverages the values in a field (column) of records in a list or database that match conditions you specify.
DCOUNTCounts the cells that contain numbers in a field (column) of records in a list or database that match conditions that you specify.
DCOUNTACounts the nonblank cells in a field (column) of records in a list or database that match conditions that you specify.
DGETExtracts a single value from a column of a list or database that matches conditions that you specify.
DMAXReturns the largest number in a field (column) of records in a list or database that matches conditions you that specify.
DMINReturns the smallest number in a field (column) of records in a list or database that matches conditions that you specify.
DPRODUCTMultiplies the values in a field (column) of records in a list or database that match conditions that you specify.
DSTDEVEstimates the standard deviation of a population based on a sample by using the numbers in a field (column) of records in a list or database that match conditions that you specify.
DSTDEVPCalculates the standard deviation of a population based on the entire population by using the numbers in a field (column) of records in a list or database that match conditions that you specify.
DSUMIn a list or database, DSUM provides the sum of the numbers in fields (columns) of records that match your specified conditions.
DVAREstimates the variance of a population based on a sample by using the numbers in a field (column) of records in a list or database that match conditions that you specify.
DVARPCalculates the variance of a population based on the entire population by using the numbers in a field (column) of records in a list or database that match conditions that you specify.
DATEReturns the serial number of a particular date
DATEDIFCalculates the number of days, months, or years between two dates. This function is useful in formulas where you need to calculate an age.
DATEVALUEConverts a date in the form of text to a serial number.
DAYReturns the day of a date, represented by a serial number. The day is given as an integer ranging from 1 to 31.
DAYSReturns the number of days between two dates.
DAYS360Calculates the number of days between two dates based on a 360-day year
EDATEReturns the serial number that represents the date that is the indicated number of months before or after a specified date (the start_date). Use EDATE to calculate maturity dates or due dates that fall on the same day of the month as the date of issue.
EOMONTHReturns the serial number of the last day of the month before or after a specified number of months
EPOCHTODATEConverts a Unix epoch timestamp in seconds, milliseconds, or microseconds to a datetime in Universal Time Coordinated (UTC).
HOURConverts a serial number to an hour
ISOWEEKNUMReturns the number of the ISO week number of the year for a given date
MINUTEReturns the minutes of a time value. The minute is given as an integer, ranging from 0 to 59.
MONTHReturns the month of a date represented by a serial number. The month is given as an integer, ranging from 1 (January) to 12 (December).
NETWORKDAYSReturns the number of whole working days between start_date and end_date. Working days exclude weekends and any dates identified in holidays. Use NETWORKDAYS to calculate employee benefits that accrue based on the number of days worked during a specific term.
NETWORKDAYS_INTLReturns the number of whole workdays between two dates using parameters to indicate which and how many days are weekend days
NOWReturns the serial number of the current date and time. If the cell format was General before the function was entered, Excel changes the cell format so that it matches the date and time format of your regional settings. You can change the date and time format for the cell by using the commands in the Number group of the Home tab on the Ribbon.
SECONDReturns the seconds of a time value. The second is given as an integer in the range 0 (zero) to 59.
TIMEReturns the decimal number for a particular time. If the cell format was General before the function was entered, the result is formatted as a date.
TIMEVALUEConverts a time in the form of text to a serial number.
TO_DATEConverts a provided number to a date.
TODAYReturns the serial number of today's date
WEEKDAYConverts a serial number to a day of the week
WEEKNUMConverts a serial number to a number representing where the week falls numerically with a year
WORKDAYReturns the serial number of the date before or after a specified number of workdays
WORKDAY_INTLReturns the serial number of the date before or after a specified number of workdays using parameters to indicate which and how many days are weekend days
YEARReturns the year corresponding to a date. The year is returned as an integer in the range 1900-9999.
YEARFRACReturns the year fraction representing the number of whole days between start_date and end_date
BESSELIReturns the modified Bessel function In(x)
BESSELJReturns the Bessel function Jn(x)
BESSELKReturns the modified Bessel function Kn(x)
BESSELYReturns the Bessel function Yn(x)
BIN2DECConverts a binary number to decimal
BIN2HEXConverts a binary number to hexadecimal
BIN2OCTConverts a binary number to octal.
BITANDReturns a bitwise 'AND' of two numbers.
BITLSHIFTReturns a value number shifted left by shift_amount bits
BITORReturns a bitwise OR of 2 numbers
BITRSHIFTReturns a value number shifted right by shift_amount bits
BITXORReturns a bitwise 'Exclusive Or' of two numbers
COMPLEXConverts real and imaginary coefficients into a complex number
CONVERTConverts a number from one measurement system to another
DEC2BINConverts a decimal number to binary
DEC2HEXConverts a decimal number to hexadecimal
DEC2OCTConverts a decimal number to octal
DELTATests whether two values are equal
ERFReturns the error function
ERF_PRECISEReturns the error function
ERFCReturns the complementary error function
ERFC_PRECISEReturns the complementary ERF function integrated between x and infinity
GESTEPTests whether a number is greater than a threshold value
HEX2BINConverts a hexadecimal number to binary
HEX2DECConverts a hexadecimal number to decimal
HEX2OCTConverts a hexadecimal number to octal
IMABSReturns the absolute value (modulus) of a complex number
IMAGINARYReturns the imaginary coefficient of a complex number
IMARGUMENTReturns the argument theta, an angle expressed in radians
IMCONJUGATEReturns the complex conjugate of a complex number
IMCOSReturns the cosine of a complex number
IMCOSHReturns the hyperbolic cosine of a complex number
IMCOTReturns the cotangent of a complex number
IMCOTHThe IMCOTH function returns the hyperbolic cotangent of the given complex number. For example, a given complex number "x+yi" returns "coth(x+yi)."
IMCSCReturns the cosecant of a complex number
IMCSCHReturns the hyperbolic cosecant of a complex number
IMDIVReturns the quotient of two complex numbers in x + yi or x + yj text format.
IMEXPReturns the exponential of a complex number in x + yi or x + yj text format.
IMLNReturns the natural logarithm of a complex number
IMLOGThe IMLOG function returns the logarithm of a complex number for a specified base.
IMLOG10Returns the base-10 logarithm of a complex number
IMLOG2Returns the base-2 logarithm of a complex number
IMPOWERReturns a complex number raised to an integer power
IMPRODUCTReturns the product of from 1 to 255 complex numbers
IMREALReturns the real coefficient of a complex number
IMSECReturns the secant of a complex number
IMSECHReturns the hyperbolic secant of a complex number
IMSINReturns the sine of a complex number
IMSINHReturns the hyperbolic sine of a complex number
IMSQRTReturns the square root of a complex number
IMSUBReturns the difference between two complex numbers
IMSUMReturns the sum of complex numbers
IMTANReturns the tangent of a complex number
IMTANHThe IMTANH function returns the hyperbolic tangent of the given complex number. For example, a given complex number "x+yi" returns "tanh(x+yi)."
OCT2BINConverts an octal number to binary
OCT2DECConverts an octal number to decimal
OCT2HEXConverts an octal number to hexadecimal
ACCRINTReturns the accrued interest for a security that pays periodic interest
ACCRINTMReturns the accrued interest for a security that pays interest at maturity
AMORDEGRCReturns the depreciation for each accounting period by using a depreciation coefficient
AMORLINCReturns the depreciation for each accounting period
COUPDAYBSReturns the number of days from the beginning of the coupon period to the settlement date
COUPDAYSReturns the number of days in the coupon period that contains the settlement date
COUPDAYSNCReturns the number of days from the settlement date to the next coupon date
COUPNCDReturns the next coupon date after the settlement date
COUPNUMReturns the number of coupons payable between the settlement date and maturity date
COUPPCDReturns the previous coupon date before the settlement date
CUMIPMTReturns the cumulative interest paid between two periods
CUMPRINCReturns the cumulative principal paid on a loan between two periods
DBReturns the depreciation of an asset for a specified period by using the fixed-declining balance method
DDBReturns the depreciation of an asset for a specified period by using the double-declining balance method or some other method that you specify
DISCReturns the discount rate for a security
DOLLARDEConverts a dollar price, expressed as a fraction, into a dollar price, expressed as a decimal number
DOLLARFRConverts a dollar price, expressed as a decimal number, into a dollar price, expressed as a fraction
DURATIONReturns the annual duration of a security with periodic interest payments
EFFECTReturns the effective annual interest rate, given the nominal annual interest rate and the number of compounding periods per year.
FVReturns the future value of an investment
FVSCHEDULEReturns the future value of an initial principal after applying a series of compound interest rates
INTRATEReturns the interest rate for a fully invested security.
IPMTReturns the interest payment for a given period for an investment based on periodic, constant payments and a constant interest rate.
IRRReturns the internal rate of return for a series of cash flows
ISPMTCalculates the interest paid during a specific period of an investment
MDURATIONReturns the Macauley modified duration for a security with an assumed par value of $100
MIRRReturns the internal rate of return where positive and negative cash flows are financed at different rates
NOMINALReturns the annual nominal interest rate
NPERReturns the number of periods for an investment
NPVReturns the net present value of an investment based on a series of periodic cash flows and a discount rate
ODDFPRICEReturns the price per $100 face value of a security with an odd first period
ODDFYIELDReturns the yield of a security with an odd first period
ODDLPRICEReturns the price per $100 face value of a security with an odd last period
ODDLYIELDReturns the yield of a security with an odd last period
PDURATIONReturns the number of periods required by an investment to reach a specified value
PMTReturns the periodic payment for an annuity
PPMTReturns the payment on the principal for an investment for a given period
PRICEReturns the price per $100 face value of a security that pays periodic interest
PRICEDISCReturns the price per $100 face value of a discounted security
PRICEMATReturns the price per $100 face value of a security that pays interest at maturity
PVReturns the present value of an investment
RATEReturns the interest rate per period of an annuity
RECEIVEDReturns the amount received at maturity for a fully invested security
RRIReturns an equivalent interest rate for the growth of an investment
SLNReturns the straight-line depreciation of an asset for one period
SYDReturns the sum-of-years' digits depreciation of an asset for a specified period
TBILLEQReturns the bond-equivalent yield for a Treasury bill
TBILLPRICEReturns the price per $100 face value for a Treasury bill
TBILLYIELDReturns the yield for a Treasury bill
VDBReturns the depreciation of an asset for a specified or partial period by using a declining balance method
XIRRReturns the internal rate of return for a schedule of cash flows that is not necessarily periodic
XNPVReturns the net present value for a schedule of cash flows that is not necessarily periodic
YIELDReturns the yield on a security that pays periodic interest
YIELDDISCReturns the annual yield for a discounted security; for example, a Treasury bill
YIELDMATReturns the annual yield of a security that pays interest at maturity
CELLReturns information about the formatting, location, or contents of a cell
ERROR_TYPEReturns a number corresponding to an error type
INFOReturns information about the current operating environment
ISBETWEENChecks whether a provided number is between two other numbers either inclusively or exclusively.
ISBLANKReturns TRUE if the value is blank
ISDATEThe ISDATE function returns whether a value is a date.
ISEMAILTo check if a value is a valid email address, use the ISEMAIL function. This checks if the value follows a commonly accepted format for email addresses but doesn’t verify its existence.
ISERRReturns TRUE if the value is any error value except #N/A
ISERRORReturns TRUE if the value is any error value
ISEVENReturns TRUE if number is even, or FALSE if number is odd.
ISFORMULAReturns TRUE if there is a reference to a cell that contains a formula
ISLOGICALReturns TRUE if the value is a logical value
ISNAReturns TRUE if the value is the #N/A error value
ISNONTEXTReturns TRUE if the value is not text
ISNUMBERReturns TRUE if the value is a number
ISODDReturns TRUE if the number is odd
ISOMITTEDChecks whether the value in a&nbsp;LAMBDA&nbsp;is missing and returns TRUE or FALSE
ISREFReturns TRUE if the value is a reference
ISTEXTReturns TRUE if the value is text
ISURLChecks whether a value is a valid URL.
NReturns a value converted to a number
NAReturns the error value #N/A
SHEETReturns the sheet number of the referenced sheet
SHEETSReturns the number of sheets in a workbook
TYPEReturns a number indicating the data type of a value
ANDReturns TRUE if all of its arguments are TRUE
BYCOLApplies a LAMBDA to each column and returns an array of the results
BYROWApplies a LAMBDA to each row and returns an array of the results
FALSEReturns the logical value FALSE.
IFSpecifies a logical test to perform
IFERRORReturns a value you specify if a formula evaluates to an error; otherwise, returns the result of the formula
IFNAReturns the value you specify if the expression resolves to #N/A, otherwise returns the result of the expression
IFSChecks whether one or more conditions are met and returns a value that corresponds to the first TRUE condition.
LAMBDAUse a LAMBDA function to create custom, reusable functions and call them by a friendly name. The new function is available throughout the workbook and called like native Excel functions.
LETAssigns names to calculation results
MAKEARRAYReturns a calculated array of a specified row and column size, by applying a LAMBDA
MAPReturns an array formed by mapping each value in the array(s) to a new value by applying a LAMBDA to create a new value.
NOTReverses the logic of its argument.
ORReturns TRUE if any of its arguments evaluate to TRUE, and returns FALSE if all of its arguments evaluate to FALSE.
REDUCEReduces an array to an accumulated value by applying a LAMBDA to each value and returning the total value in the accumulator.
SCANScans an array by applying a LAMBDA to each value and returns an array that has each intermediate value.
SWITCHEvaluates an expression against a list of values and returns the result corresponding to the first matching value. If there is no match, an optional default value may be returned.
TRUEReturns the logical value TRUE.
XORReturns TRUE if an odd number of its arguments evaluate to TRUE, and FALSE if an even number of its arguments evaluate to TRUE.
ADDRESSObtain the address of a cell in a worksheet, given specified row and column numbers. For example, ADDRESS(2,3) returns $C$2. As another example, ADDRESS(77,300) returns $KN$77. You can use other functions, such as the ROW and COLUMN functions, to provide the row and column number arguments for the ADDRESS function.
AREASReturns the number of areas in a reference
CHOOSEChooses a value from a list of values.
CHOOSECOLSReturns the specified columns from an array
CHOOSEROWSReturns the specified rows from an array
COLUMNReturns the column number of the given cell reference.
COLUMNSReturns the number of columns in an array or reference.
DROPExcludes a specified number of rows or columns from the start or end of an array
EXPANDExpands or pads an array to specified row and column dimensions
FILTERThe FILTER function allows you to filter a range of data based on criteria you define.
FORMULATEXTReturns the formula at the given reference as text
GETPIVOTDATAReturns data stored in a PivotTable report
HLOOKUPSearches for a value in the top row of a table or an array of values, and then returns a value in the same column from a row you specify in the table or array. Use HLOOKUP when your comparison values are located in a row across the top of a table of data, and you want to look down a specified number of rows. Use VLOOKUP when your comparison values are located in a column to the left of the data you want to find.
HSTACKAppends arrays horizontally and in sequence to return a larger array
HYPERLINKCreates a hyperlink inside a cell.
IMAGECurrent Channel
INDEXThe INDEX function returns a value or the reference to a value from within a table or range.
INDIRECTReturns the reference specified by a text string. References are immediately evaluated to display their contents.
LOOKUPWhen you need to look in a single row or column and find a value from the same position in a second row or column
MATCHThe MATCH function searches for a specified item in a range of cells, and then returns the relative position of that item in the range.
OFFSETReturns a reference offset from a given reference
ROWReturns the row number of a reference
ROWSReturns the number of rows in an array or reference.
RTDRetrieves real-time data from a program that supports COM automation
SORTSorts the contents of a range or array
SORTBYSorts the contents of a range or array based on the values in a corresponding range or array
TAKEReturns a specified number of contiguous rows or columns from the start or end of an array
TOCOLReturns the array in a single column
TOROWReturns the array in a single row
TRANSPOSEReturns the transpose of an array
UNIQUEReturns a list of unique values in a list or range
VLOOKUPUse VLOOKUP when you need to find things in a table or a range by row. For example, look up a price of an automotive part by the part number, or find an employee name based on their employee ID.
VSTACKAppends arrays vertically and in sequence to return a larger array
WRAPCOLSWraps the provided row or column of values by columns after a specified number of elements
WRAPROWSWraps the provided row or column of values by rows after a specified number of elements
XLOOKUPSearches a range or an array, and returns an item corresponding to the first match it finds. If a match doesn't exist, then XLOOKUP can return the closest (approximate) match.
XMATCHSearches for a specified item in an array or range of cells, and then returns the item's relative position.
ABSReturns the absolute value of a number. The absolute value of a number is the number without its sign.
ACOSReturns the arccosine, or inverse cosine, of a number. The arccosine is the angle whose cosine is number. The returned angle is given in radians in the range 0 (zero) to pi.
ACOSHReturns the inverse hyperbolic cosine of a number. The number must be greater than or equal to 1. The inverse hyperbolic cosine is the value whose hyperbolic cosine is number, so ACOSH(COSH(number)) equals number.
ACOTReturns the principal value of the arccotangent, or inverse cotangent, of a number.
ACOTHReturns the hyperbolic arccotangent of a number
AGGREGATEReturns an aggregate in a list or database
ARABICConverts a Roman numeral to an Arabic numeral.
ASINReturns the arcsine, or inverse sine, of a number. The arcsine is the angle whose sine is number . The returned angle is given in radians in the range -pi/2 to pi/2.
ASINHReturns the inverse hyperbolic sine of a number. The inverse hyperbolic sine is the value whose hyperbolic sine is number , so ASINH(SINH(number)) equals number .
ATANReturns the arctangent of a number.
ATAN2Returns the arctangent from x- and y-coordinates.
ATANHReturns the inverse hyperbolic tangent of a number. Number must be between -1 and 1 (excluding -1 and 1). The inverse hyperbolic tangent is the value whose hyperbolic tangent is number , so ATANH(TANH(number)) equals number .
BASEConverts a number into a text representation with the given radix (base).
CEILINGRounds a number to the nearest integer or to the nearest multiple of significance
CEILING_MATHRounds a number up, to the nearest integer or to the nearest multiple of significance
CEILING_PRECISERounds a number the nearest integer or to the nearest multiple of significance. Regardless of the sign of the number, the number is rounded up.
COMBINReturns the number of combinations for a given number of objects
COMBINAReturns the number of combinations with repetitions for a given number of items
COSReturns the cosine of a number.
COSHReturns the hyperbolic cosine of a number
COTReturns the cotangent of an angle
COTHReturns the hyperbolic cotangent of a number
CSCReturns the cosecant of an angle
CSCHReturns the hyperbolic cosecant of an angle
DECIMALConverts a text representation of a number in a given base into a decimal number
DEGREESConverts radians to degrees
EVENRounds a number up to the nearest even integer
EXPReturns e raised to the power of a given number
FACTReturns the factorial of a number
FACTDOUBLEReturns the double factorial of a number
FLOORRounds a number down, toward zero
FLOOR_MATHRounds a number down, to the nearest integer or to the nearest multiple of significance
FLOOR_PRECISERounds a number down to the nearest integer or to the nearest multiple of significance. Regardless of the sign of the number, the number is rounded down.
GCDReturns the greatest common divisor
INTRounds a number down to the nearest integer
ISO_CEILINGReturns a number that is rounded up to the nearest integer or to the nearest multiple of significance
LCMReturns the least common multiple
LNReturns the natural logarithm of a number
LOGReturns the logarithm of a number to a specified base
LOG10Returns the base-10 logarithm of a number
MDETERMReturns the matrix determinant of an array
MINVERSEReturns the matrix inverse of an array
MMULTReturns the matrix product of two arrays
MODReturns the remainder after number is divided by divisor. The result has the same sign as divisor.
MROUNDReturns a number rounded to the desired multiple
MULTINOMIALReturns the multinomial of a set of numbers
MUNITReturns the unit matrix or the specified dimension
ODDRounds a number up to the nearest odd integer
PIReturns the value of pi
POWERReturns the result of a number raised to a power.
PRODUCTMultiplies all the numbers given as arguments and returns the product.
QUOTIENTReturns the integer portion of a division
RADIANSConverts degrees to radians
RANDReturns a random number between 0 and 1
RANDARRAYReturns an array of random numbers between 0 and 1. However, you can specify the number of rows and columns to fill, minimum and maximum values, and whether to return whole numbers or decimal values.
RANDBETWEENReturns a random number between the numbers you specify
ROMANConverts an Arabic numeral to Roman, as text
ROUNDRounds a number to a specified number of digits
ROUNDBANKRounds a number in banker's rounding
ROUNDDOWNRounds a number down, toward zero
ROUNDUPRounds a number up, away from zero
SECReturns the secant of an angle
SECHReturns the hyperbolic secant of an angle
SERIESSUMReturns the sum of a power series based on the formula
SEQUENCEGenerates a list of sequential numbers in an array, such as 1, 2, 3, 4
SIGNReturns the sign of a number
SINReturns the sine of the given angle
SINHReturns the hyperbolic sine of a number
SQRTReturns a positive square root
SQRTPIReturns the square root of (number * pi)
SUBTOTALReturns a subtotal in a list or database.
SUMYou can add individual values, cell references or ranges or a mix of all three.
SUMIFSum the values in a range that meet criteria that you specify.
SUMIFSAdds all of its arguments that meet multiple criteria.
SUMPRODUCTReturns the sum of the products of corresponding array components
SUMSQReturns the sum of the squares of the arguments
SUMX2MY2Returns the sum of the difference of squares of corresponding values in two arrays
SUMX2PY2Returns the sum of the sum of squares of corresponding values in two arrays
SUMXMY2Returns the sum of squares of differences of corresponding values in two arrays
TANReturns the tangent of a number.
TANHReturns the hyperbolic tangent of a number.
TRUNCTruncates a number to an integer
AVEDEVReturns the average of the absolute deviations of data points from their mean.
AVERAGEReturns the average (arithmetic mean) of the arguments.
AVERAGE_WEIGHTEDThe AVERAGE.WEIGHTED function finds the weighted average of a set of values, given the values and the corresponding weights.
AVERAGEAReturns the average of its arguments, including numbers, text, and logical values.
AVERAGEIFReturns the average (arithmetic mean) of all the cells in a range that meet a given criteria.
AVERAGEIFSReturns the average (arithmetic mean) of all cells that meet multiple criteria.
BETA_DISTReturns the beta cumulative distribution function
BETA_INVReturns the inverse of the cumulative distribution function for a specified beta distribution
BINOM_DISTReturns the individual term binomial distribution probability
BINOM_DIST_RANGEReturns the probability of a trial result using a binomial distribution
BINOM_INVReturns the smallest value for which the cumulative binomial distribution is less than or equal to a criterion value
CHISQ_DISTReturns the left-tailed probability of the chi-squared distribution.
CHISQ_DIST_RTReturns the right-tailed probability of the chi-squared distribution.
CHISQ_INVReturns the inverse of the left-tailed probability of the chi-squared distribution.
CHISQ_INV_RTReturns the inverse of the right-tailed probability of the chi-squared distribution.
CHISQ_TESTReturns the test for independence
CONFIDENCE_NORMReturns the confidence interval for a population mean, using a normal distribution.
CONFIDENCE_TReturns the confidence interval for a population mean, using a Student's t distribution
CORRELReturns the correlation coefficient between two data sets
COUNTCounts the number of cells that contain numbers, and counts numbers within the list of arguments.
COUNTACounts cells containing any type of information, including error values and empty text ("") If you do not need to count logical values, text, or error values
COUNTBLANKCounts the number of blank cells within a range.
COUNTIFCounts the number of cells within a range that meet the given criteria.
COUNTIFSCounts the number of cells within a range that meet multiple criteria.
COVARIANCE_PReturns population covariance, the average of the products of deviations for each data point pair in two data sets.
COVARIANCE_SReturns the sample covariance, the average of the products of deviations for each data point pair in two data sets.
DEVSQReturns the sum of squares of deviations
EXPON_DISTReturns the exponential distribution
F_DISTReturns the F probability distribution
F_DIST_RTReturns the (right-tailed) F probability distribution
F_INVReturns the inverse of the F probability distribution
F_INV_RTReturns the inverse of the (right-tailed) F probability distribution
F_TESTReturns the result of an F-test
FISHERReturns the Fisher transformation
FISHERINVReturns the inverse of the Fisher transformation
FORECASTReturns a value along a linear trend
FORECAST_ETSReturns a future value based on existing (historical) values by using the AAA version of the Exponential Smoothing (ETS) algorithm
FORECAST_ETS_CONFINTReturns a confidence interval for the forecast value at the specified target date
FORECAST_ETS_SEASONALITYReturns the length of the repetitive pattern Excel detects for the specified time series
FORECAST_ETS_STATReturns a statistical value as a result of time series forecasting
FORECAST_LINEARReturns a future value based on existing values
FREQUENCYReturns a frequency distribution as a vertical array
GAMMAReturns the Gamma function value
GAMMA_DISTReturns the gamma distribution
GAMMA_INVReturns the inverse of the gamma cumulative distribution
GAMMALNReturns the natural logarithm of the gamma function, Γ(x)
GAMMALN_PRECISEReturns the natural logarithm of the gamma function, Γ(x)
GAUSSReturns 0.5 less than the standard normal cumulative distribution
GEOMEANReturns the geometric mean
GROWTHReturns values along an exponential trend
HARMEANReturns the harmonic mean
HYPGEOM_DISTReturns the hypergeometric distribution
INTERCEPTReturns the intercept of the linear regression line
KURTReturns the kurtosis of a data set
LARGEReturns the k-th largest value in a data set
LINESTReturns the parameters of a linear trend
LOGESTReturns the parameters of an exponential trend
LOGNORM_DISTReturns the cumulative lognormal distribution
LOGNORM_INVReturns the inverse of the lognormal cumulative distribution
MARGINOFERRORThis function calculates the margin of error from a range of values and a confidence level.
MAXReturns the largest value in a set of values.
MAXAReturns the maximum value in a list of arguments, including numbers, text, and logical values.
MAXIFSReturns the maximum value among cells specified by a given set of conditions or criteria.
MEDIANReturns the median of the given numbers
MINReturns the smallest number in a set of values.
MINAReturns the smallest value in a list of arguments, including numbers, text, and logical values
MINIFSReturns the minimum value among cells specified by a given set of conditions or criteria.
MODE_MULTReturns a vertical array of the most frequently occurring, or repetitive values in an array or range of data
MODE_SNGLReturns the most common value in a data set
NEGBINOM_DISTReturns the negative binomial distribution
NORM_DISTReturns the normal cumulative distribution
NORM_INVReturns the inverse of the normal cumulative distribution
NORM_S_DISTReturns the standard normal cumulative distribution
NORM_S_INVReturns the inverse of the standard normal cumulative distribution
PEARSONReturns the Pearson product moment correlation coefficient
PERCENTILE_EXCReturns the k-th percentile of values in a data set (Excludes 0 and 1).
PERCENTILE_INCReturns the k-th percentile of values in a data set (Includes 0 and 1)
PERCENTRANK_EXCReturns the percentage rank of a value in a data set (Excludes 0 and 1)
PERCENTRANK_INCReturns the percentage rank of a value in a data set (Includes 0 and 1)
PERMUTReturns the number of permutations for a given number of objects
PERMUTATIONAReturns the number of permutations for a given number of objects (with repetitions) that can be selected from the total objects
PHIReturns the value of the density function for a standard normal distribution
POISSON_DISTReturns the Poisson distribution
PROBReturns the probability that values in a range are between two limits
QUARTILE_EXCReturns the quartile of a data set (Excludes 0 and 1)
QUARTILE_INCReturns the quartile of a data set (Includes 0 and 1)
RANK_AVGReturns the rank of a number in a list of numbers
RANK_EQReturns the rank of a number in a list of numbers
RSQReturns the square of the Pearson product moment correlation coefficient
SKEWReturns the skewness of a distribution
SKEW_PReturns the skewness of a distribution based on a population
SLOPEReturns the slope of the linear regression line
SMALLReturns the k-th smallest value in a data set
STANDARDIZEReturns a normalized value
STDEV_PCalculates standard deviation based on the entire population given as arguments (ignores logical values and text).
STDEV_SEstimates standard deviation based on a sample (ignores logical values and text in the sample).
STDEVAEstimates standard deviation based on a sample, including numbers, text, and logical values.
STDEVPACalculates standard deviation based on the entire population given as arguments, including text and logical values.
STEYXReturns the standard error of the predicted y-value for each x in the regression
T_DISTReturns the probability for the Student t-distribution
T_DIST_2TReturns the probability for the Student t-distribution (two-tailed)
T_DIST_RTReturns the probability for the Student t-distribution (right-tailed)
T_INVReturns the inverse of the probability for the Student t-distribution
T_INV_2TReturns the inverse of the probability for the Student t-distribution (two-tailed)
T_TESTReturns the probability associated with a Student's t-test
TRENDReturns values along a linear trend
TRIMMEANReturns the mean of the interior of a data set
VAR_PCalculates variance based on the entire population (ignores logical values and text in the population).
VAR_SEstimates variance based on a sample (ignores logical values and text in the sample).
VARAEstimates variance based on a sample, including numbers, text, and logical values
VARPACalculates variance based on the entire population, including numbers, text, and logical values
WEIBULL_DISTReturns the Weibull distribution
Z_TESTReturns the one-tailed probability-value of a z-test
ASCChanges full-width (double-byte) English letters or katakana within a character string to half-width (single-byte) characters
ARRAYTOTEXTReturns an array of text values from any specified range
BAHTTEXTConverts a number to text, using the ß (baht) currency format
CHARReturns the character specified by the code number
CLEANRemoves all nonprintable characters from text
CODEReturns a numeric code for the first character in a text string
CONCATCombines the text from multiple ranges and/or strings, but it doesn't provide the delimiter or IgnoreEmpty arguments.
CONCATENATEJoins several text items into one text item
DBCSChanges half-width (single-byte) English letters or katakana within a character string to full-width (double-byte) characters
DOLLARConverts a number to text using currency format
EXACTChecks to see if two text values are identical
FINDFinds one text value within another (case-sensitive)
FINDBFinds one text value within another (case-sensitive)
FIXEDFormats a number as text with a fixed number of decimals
LEFTReturns the leftmost characters from a text value
LEFTBReturns the leftmost characters from a text value
LENReturns the number of characters in a text string
LENBReturns the number of bytes used to represent the characters in a text string.
LOWERConverts text to lowercase.
MIDReturns a specific number of characters from a text string starting at the position you specify.
MIDBReturns a specific number of characters from a text string starting at the position you specify
NUMBERSTRINGConvert numbers to Chinese strings
NUMBERVALUEConverts text to number in a locale-independent manner
PHONETICExtracts the phonetic (furigana) characters from a text string
PROPERCapitalizes the first letter in each word of a text value
REGEXEXTRACTExtracts the first matching substrings according to a regular expression.
REGEXMATCHWhether a piece of text matches a regular expression.
REGEXREPLACEReplaces part of a text string with a different text string using regular expressions.
REPLACEReplaces characters within text
REPLACEBReplaces characters within text
REPTRepeats text a given number of times
RIGHTReturns the rightmost characters from a text value
RIGHTBReturns the rightmost characters from a text value
SEARCHFinds one text value within another (not case-sensitive)
SEARCHBFinds one text value within another (not case-sensitive)
SUBSTITUTESubstitutes new text for old text in a text string
TConverts its arguments to text
TEXTFormats a number and converts it to text
TEXTAFTERReturns text that occurs after given character or string
TEXTBEFOREReturns text that occurs before a given character or string
TEXTJOINText: Combines the text from multiple ranges and/or strings
TEXTSPLITSplits text strings by using column and row delimiters
TRIMRemoves all spaces from text except for single spaces between words.
UNICHARReturns the Unicode character that is references by the given numeric value
UNICODEReturns the number (code point) that corresponds to the first character of the text
UPPERConverts text to uppercase
VALUEConverts a text argument to a number
VALUETOTEXTReturns text from any specified value
CALLCalls a procedure in a dynamic link library or code resource
EUROCONVERTConverts a number to euros, converts a number from euros to a euro member currency, or converts a number from one euro member currency to another by using the euro as an intermediary (triangulation)
REGISTER_IDReturns the register ID of the specified dynamic link library (DLL) or code resource that has been previously registered
ENCODEURLThe ENCODEURL function returns a URL-encoded string, replacing certain non-alphanumeric characters with the percentage symbol (%) and a hexadecimal number.
FILTERXMLThe FILTERXML function returns specific data from XML content by using the specified xpath.
WEBSERVICEThe WEBSERVICE function returns data from a web service on the Internet or Intranet.

Facade API

For more details, please refer to the FFormula Facade API.

Importing

Plugin mode note

Only plugin mode requires manually importing the Facade package. Preset mode already includes the corresponding Facade package, so no extra import is needed.

TypeScript
import '@univerjs/engine-formula/facade'import '@univerjs/sheets-formula/facade'import '@univerjs/sheets-formula-ui/facade'

Show Range Selector Dialog

@univerjs/sheets-formula-ui/facade adds univerAPI.showRangeSelectorDialog. Use it when your custom UI needs users to pick one or more ranges with the same selector used by formula-related panels.

TypeScript
const workbook = univerAPI.getActiveWorkbook()const worksheet = workbook?.getActiveSheet()if (workbook && worksheet) {  await univerAPI.showRangeSelectorDialog({    unitId: workbook.getId(),    subUnitId: worksheet.getSheetId(),    initialValue: [      {        unitId: workbook.getId(),        sheetName: worksheet.getSheetName(),        range: worksheet.getRange('A1:B2').getRange(),      },    ],    maxRangeCount: 2,    supportAcrossSheet: true,    callback: (ranges, isCancel) => {      console.log(ranges, isCancel)    },  })}

Execute Formula Calculation

TypeScript
const formulaEngine = univerAPI.getFormula()formulaEngine.executeCalculation()

Stop Formula Calculation

TypeScript
const formulaEngine = univerAPI.getFormula()formulaEngine.stopCalculation()

Formula Calculation Start

TypeScript
// Listening to formula calculation start eventconst formulaEngine = univerAPI.getFormula()formulaEngine.calculationStart((forceCalculate) => {  console.log(forceCalculate)})

Formula Calculation Processing

TypeScript
// Listening to formula calculation processing eventconst formulaEngine = univerAPI.getFormula()formulaEngine.calculationProcessing((stageInfo) => {  console.log(stageInfo)})

Formula Calculation End

TypeScript
// Listening to formula calculation end eventconst formulaEngine = univerAPI.getFormula()formulaEngine.calculationEnd((functionsExecutedState) => {  console.log(functionsExecutedState)})

Formula Calculation Result Applied

TypeScript
// Listening to formula calculation result applied eventconst formulaEngine = univerAPI.getFormula()formulaEngine.calculationResultApplied((result) => {  console.log(result)})// Wait for formula calculation result to be appliedawait formulaEngine.onCalculationResultApplied()

Set Formula Calculation Mode When Initializing Data

TypeScript
const formulaEngine = univerAPI.getFormula()formulaEngine.setInitialFormulaComputing(CalculationMode.FORCED)

If this API is called after the Starting lifecycle, it will take effect the next time a Univer Sheet is created.

If you want it to take effect during the current initialization of the Univer Sheet, you can consider calling it before the Ready lifecycle, for example:

TypeScript
univerAPI.addEvent(univerAPI.Event.LifeCycleChanged, ({ stage }) => {  if (stage === LifecycleStages.Starting) {    const formulaEngine = univerAPI.getFormula()    formulaEngine.setInitialFormulaComputing(CalculationMode.FORCED)  }})

Set Max Iteration

When there are circular references in formulas, you can use this API to set the maximum number of iterations for formula calculations. The default value is 1.

TypeScript
const formulaEngine = univerAPI.getFormula()formulaEngine.setMaxIteration(10)

Get Formula Strings Execution Result

Execute a batch of formulas asynchronously and receive calculation results:

TypeScript
const formulaEngine = univerAPI.getFormula()const formulas = {  Book1: {    Sheet1: {      2: {        3: [          // Full formula:          '=SUM(A1:A10) + SQRT(D7)',          // Decomposed sub-formulas (each one can be evaluated independently):          'SUM(A1:A10)', // sub-formula 1          'SQRT(D7)', // sub-formula 2          'A1:A10', // range reference          'D7', // single-cell reference        ],      },      4: {        5: ['=A2 + B2 + SQRT(C5)', 'A2', 'B2', 'SQRT(C5)'],      },    },  },}const result = await formulaEngine.executeFormulas(formulas)console.log(result)

Custom Formulas

Univer supports custom formulas. Please refer to the Custom Formulas section to learn how to implement them.

Frequently Asked Questions

You need to import the hyperlink plugin for Univer Sheets. See the Hyperlink module.

How is this guide?

© 2026 DreamNum Co., Ltd.