truecalc

CI run  ·  Updated: 2026-07-23 00:47 UTC

517 functions
Function Category Syntax Description
ABSmathABS(number)Absolute value of a number
ACCRINTfinancialACCRINT(issue, first_coupon, settlement, rate, par, frequency, [basis])Accrued interest for periodic coupon
ACCRINTMfinancialACCRINTM(issue, settlement, rate, par, [basis])Accrued interest at maturity
ACOSmathACOS(number)Arccosine in radians
ACOSHmathACOSH(number)Inverse hyperbolic cosine
ACOTmathACOT(number)Inverse cotangent in radians
ACOTHmathACOTH(number)Inverse hyperbolic cotangent
ADDRESSlookupADDRESS(row, col, [abs_mode], [a1], [sheet_text])Returns a cell address string
AMORLINCfinancialAMORLINC(cost, date_purchased, first_period, salvage, period, rate, [basis])Linear depreciation (French system)
ANDlogicalAND(value1,...)True if all arguments are true
ARABICtextARABIC(roman_text)Convert Roman numeral to integer
ARRAYFORMULAarrayARRAYFORMULA(array_formula)Evaluates a formula as an array formula
ARRAY_CONSTRAINarrayARRAY_CONSTRAIN(input, num_rows, num_cols)Constrains an array to a given number of rows and columns
ASCtextASC(text)Convert full-width chars to half-width
ASINmathASIN(number)Arcsine in radians
ASINHmathASINH(number)Inverse hyperbolic sine
ATANmathATAN(number)Arctangent in radians
ATAN2mathATAN2(x, y)Arctangent of y/x in radians
ATANHmathATANH(number)Inverse hyperbolic tangent
AVEDEVstatisticalAVEDEV(value1,...)Average of absolute deviations from the mean
AVERAGEstatisticalAVERAGE(value1,...)Arithmetic mean of arguments
AVERAGE.WEIGHTEDstatisticalAVERAGE.WEIGHTED(values,weights)Weighted average
AVERAGEAstatisticalAVERAGEA(value1,...)Average including booleans and text
AVERAGEIFstatisticalAVERAGEIF(range, criterion, [avg_range])Average cells where range matches criterion
AVERAGEIFSstatisticalAVERAGEIFS(avg_range,criteria_range1,criteria1,...)Conditional average with multiple criteria
BASEmathBASE(value, base, [min_length])Convert number to string in given base
BETA.DISTstatisticalBETA.DIST(x,alpha,beta,cumulative,[lo],[hi])Beta distribution CDF/PDF
BETA.INVstatisticalBETA.INV(p,alpha,beta,lo,hi)Beta inverse CDF
BETADISTstatisticalBETADIST(x,alpha,beta,lo,hi)Beta distribution CDF (legacy)
BETAINVstatisticalBETAINV(p,alpha,beta,lo,hi)Beta inverse CDF (legacy)
BIN2DECengineeringBIN2DEC(number)Convert binary to decimal
BIN2HEXengineeringBIN2HEX(number, [places])Convert binary to hexadecimal
BIN2OCTengineeringBIN2OCT(number, [places])Convert binary to octal
BINOM.DISTstatisticalBINOM.DIST(k,n,p,cumulative)Binomial CDF/PMF
BINOM.INVstatisticalBINOM.INV(n,p,alpha)Binomial inverse CDF
BINOMDISTstatisticalBINOMDIST(k,n,p,cumulative)Binomial CDF/PMF (legacy)
BITANDengineeringBITAND(number1, number2)Bitwise AND of two integers
BITLSHIFTengineeringBITLSHIFT(number, shift_amount)Left-shift an integer by a number of bits
BITORengineeringBITOR(number1, number2)Bitwise OR of two integers
BITRSHIFTengineeringBITRSHIFT(number, shift_amount)Right-shift an integer by a number of bits
BITXORengineeringBITXOR(number1, number2)Bitwise XOR of two integers
BYCOLarrayBYCOL(array, lambda)Applies a LAMBDA to each column of an array
BYROWarrayBYROW(array, lambda)Applies a LAMBDA to each row of an array
CEILINGmathCEILING(number, significance)Round up to nearest multiple of significance
CEILING.MATHmathCEILING.MATH(number, [significance], [mode])Round up to nearest multiple; handles negative numbers via mode
CEILING.PRECISEmathCEILING.PRECISE(number, [significance])Round up to nearest multiple; sign of significance ignored
CELLlogicalCELL(info_type, [reference])Returns information about a cell
CHARtextCHAR(number)Character from ASCII/Unicode code
CHIDISTstatisticalCHIDIST(x,df)Chi-squared right-tail CDF (legacy)
CHIINVstatisticalCHIINV(p,df)Chi-squared right-tail inverse CDF (legacy)
CHISQ.DISTstatisticalCHISQ.DIST(x,df,cumulative)Chi-squared CDF/PDF
CHISQ.DIST.RTstatisticalCHISQ.DIST.RT(x,df)Chi-squared right-tail CDF
CHISQ.INVstatisticalCHISQ.INV(p,df)Chi-squared inverse CDF
CHISQ.INV.RTstatisticalCHISQ.INV.RT(p,df)Chi-squared right-tail inverse CDF
CHISQ.TESTstatisticalCHISQ.TEST(observed,expected)Chi-squared goodness of fit test
CHITESTstatisticalCHITEST(observed,expected)Chi-squared test (legacy)
CHOOSElookupCHOOSE(index, value1, value2, ...)Returns the value at the given 1-based index
CHOOSECOLSarrayCHOOSECOLS(array, col_num1, ...)Returns selected columns from an array
CHOOSEROWSarrayCHOOSEROWS(array, row_num1, ...)Returns selected rows from an array
CLEANtextCLEAN(text)Remove non-printable characters from text
CODEtextCODE(text)Numeric code of first character
COLUMNlookupCOLUMN([cell_ref])Returns the column number of a cell reference
COLUMNSarrayCOLUMNS(array)Returns the number of columns in an array or range
COMBINmathCOMBIN(n, k)Number of combinations without repetition
COMBINAmathCOMBINA(n, k)Number of combinations with repetition
COMPLEXengineeringCOMPLEX(real, imaginary, [suffix])Create a complex number string
CONCATENATEtextCONCATENATE(value1,...)Concatenate values (legacy)
CONFIDENCEstatisticalCONFIDENCE(alpha,stdev,size)Confidence interval half-width (normal)
CONFIDENCE.NORMstatisticalCONFIDENCE.NORM(alpha,stdev,size)Confidence interval half-width (normal)
CONFIDENCE.TstatisticalCONFIDENCE.T(alpha,stdev,size)Confidence interval half-width (t-dist)
CONVERTparserCONVERT(value,from_unit,to_unit)Converts a number from one unit of measurement to another
CORRELstatisticalCORREL(array1,array2)Pearson correlation coefficient
COSmathCOS(angle)Cosine of an angle in radians
COSHmathCOSH(number)Hyperbolic cosine
COTmathCOT(angle)Cotangent of an angle in radians
COTHmathCOTH(number)Hyperbolic cotangent
COUNTstatisticalCOUNT(value1,...)Count numeric values
COUNTAstatisticalCOUNTA(value1,...)Count non-empty values
COUNTBLANKstatisticalCOUNTBLANK(range)Count blank/empty cells
COUNTIFmathCOUNTIF(range, criterion)Count cells matching criterion
COUNTIFSmathCOUNTIFS(range1, criterion1, ...)Count rows where all criteria match
COUNTUNIQUEmathCOUNTUNIQUE(value1, ...)Count unique distinct values
COUPDAYBSfinancialCOUPDAYBS(settlement, maturity, frequency, [basis])Days from coupon start to settlement
COUPDAYSfinancialCOUPDAYS(settlement, maturity, frequency, [basis])Days in coupon period
COUPDAYSNCfinancialCOUPDAYSNC(settlement, maturity, frequency, [basis])Days from settlement to next coupon
COUPNCDfinancialCOUPNCD(settlement, maturity, frequency, [basis])Next coupon date after settlement
COUPNUMfinancialCOUPNUM(settlement, maturity, frequency, [basis])Number of coupons between settlement and maturity
COUPPCDfinancialCOUPPCD(settlement, maturity, frequency, [basis])Previous coupon date before settlement
COVARstatisticalCOVAR(array1,array2)Population covariance (legacy)
COVARIANCE.PstatisticalCOVARIANCE.P(array1,array2)Population covariance
COVARIANCE.SstatisticalCOVARIANCE.S(array1,array2)Sample covariance
CRITBINOMstatisticalCRITBINOM(n,p,alpha)Binomial inverse CDF (legacy)
CSCmathCSC(angle)Cosecant of an angle in radians
CSCHmathCSCH(number)Hyperbolic cosecant
CUMIPMTfinancialCUMIPMT(rate, nper, pv, start, end, type)Cumulative interest paid
CUMPRINCfinancialCUMPRINC(rate, nper, pv, start, end, type)Cumulative principal paid
DATEdateDATE(year,month,day)Creates a date serial number from year, month, and day
DATEDIFdateDATEDIF(start,end,unit)Difference between two dates in specified units
DATEVALUEdateDATEVALUE(date_text)Converts a date string to a serial number
DAVERAGEdatabaseDAVERAGE(database, field, criteria)Average of field values for rows matching criteria
DAYdateDAY(date)Day of month from a date serial number
DAYSdateDAYS(end,start)Number of days between two dates
DAYS360dateDAYS360(start,end,[method])Days between dates using 360-day year
DBfinancialDB(cost, salvage, life, period, [month])Fixed-declining balance depreciation
DCOUNTdatabaseDCOUNT(database, field, criteria)Count of numeric field values for rows matching criteria
DCOUNTAdatabaseDCOUNTA(database, field, criteria)Count of non-empty field values for rows matching criteria
DDBfinancialDDB(cost, salvage, life, period, [factor])Double-declining balance depreciation
DEC2BINengineeringDEC2BIN(number, [places])Convert decimal to binary
DEC2HEXengineeringDEC2HEX(number, [places])Convert decimal to hexadecimal
DEC2OCTengineeringDEC2OCT(number, [places])Convert decimal to octal
DECIMALmathDECIMAL(text, base)Convert string in given base to decimal
DEGREESmathDEGREES(angle)Convert radians to degrees
DELTAengineeringDELTA(number1, [number2])Test whether two values are equal
DEVSQstatisticalDEVSQ(value1,...)Sum of squared deviations from the mean
DGETdatabaseDGET(database, field, criteria)Single field value for rows matching criteria
DISCfinancialDISC(settlement, maturity, pr, redemption, [basis])Discount rate for a security
DMAXdatabaseDMAX(database, field, criteria)Maximum field value for rows matching criteria
DMINdatabaseDMIN(database, field, criteria)Minimum field value for rows matching criteria
DOLLARtextDOLLAR(number, [decimals])Format number as currency text
DOLLARDEfinancialDOLLARDE(fractional_dollar, fraction)Convert dollar price to decimal
DOLLARFRfinancialDOLLARFR(decimal_dollar, fraction)Convert decimal dollar to fractional
DPRODUCTdatabaseDPRODUCT(database, field, criteria)Product of field values for rows matching criteria
DSTDEVdatabaseDSTDEV(database, field, criteria)Sample standard deviation of field values for rows matching criteria
DSTDEVPdatabaseDSTDEVP(database, field, criteria)Population standard deviation of field values for rows matching criteria
DSUMdatabaseDSUM(database, field, criteria)Sum of field values for rows matching criteria
DURATIONfinancialDURATION(settlement, maturity, coupon, yld, frequency, [basis])Macaulay duration
DVARdatabaseDVAR(database, field, criteria)Sample variance of field values for rows matching criteria
DVARPdatabaseDVARP(database, field, criteria)Population variance of field values for rows matching criteria
EDATEdateEDATE(start,months)Date serial N months before or after a start date
EFFECTfinancialEFFECT(nominal_rate, npery)Effective annual interest rate
ENCODEURLwebENCODEURL(url)Percent-encode a URL string per RFC 3986
EOMONTHdateEOMONTH(start,months)Last day of month N months from start date
EPOCHTODATEdateEPOCHTODATE(timestamp,[unit])Converts Unix timestamp to date serial number
ERFengineeringERF(lower_limit, [upper_limit])Error function
ERF.PRECISEengineeringERF.PRECISE(x)Error function (precise)
ERFCengineeringERFC(x)Complementary error function
ERFC.PRECISEengineeringERFC.PRECISE(x)Complementary error function (precise)
ERROR.TYPElogicalERROR.TYPE(value)Number corresponding to the error type
EVENmathEVEN(number)Round up to nearest even integer
EXACTtextEXACT(text1, text2)Case-sensitive string comparison
EXPmathEXP(number)e raised to a power
EXPON.DISTstatisticalEXPON.DIST(x,lambda,cumulative)Exponential distribution
EXPONDISTstatisticalEXPONDIST(x,lambda,cumulative)Exponential distribution (legacy)
F.DISTstatisticalF.DIST(x,df1,df2,cumulative)F CDF/PDF
F.DIST.RTstatisticalF.DIST.RT(x,df1,df2)F right-tail CDF
F.INVstatisticalF.INV(p,df1,df2)F inverse CDF
F.INV.RTstatisticalF.INV.RT(p,df1,df2)F right-tail inverse CDF
F.TESTstatisticalF.TEST(array1,array2)F-test
FACTmathFACT(number)Factorial of a number
FACTDOUBLEmathFACTDOUBLE(n)Double factorial of a number
FALSElogicalFALSE()Logical false value
FDISTstatisticalFDIST(x,df1,df2)F right-tail CDF (legacy)
FILTERfilterFILTER(array, include, [if_empty])Filter an array by a boolean mask
FINDtextFIND(find_text, within_text, start)Case-sensitive position search
FINDBtextFINDB(find_text, within_text, [start_num])Case-sensitive byte-position search
FINVstatisticalFINV(p,df1,df2)F right-tail inverse CDF (legacy)
FISHERstatisticalFISHER(x)Fisher z-transform
FISHERINVstatisticalFISHERINV(y)Inverse Fisher z-transform
FIXEDtextFIXED(number, [decimals], [no_commas])Format number as text with fixed decimal places
FLATTENarrayFLATTEN(array)Flattens an array into a single column
FLOORmathFLOOR(number, significance)Round down to nearest multiple of significance
FLOOR.MATHmathFLOOR.MATH(number, [significance], [mode])Round down to nearest multiple; handles negative numbers via mode
FLOOR.PRECISEmathFLOOR.PRECISE(number, [significance])Round down to nearest multiple; sign of significance ignored
FORECASTstatisticalFORECAST(x,known_y,known_x)Forecast using linear regression
FORECAST.LINEARstatisticalFORECAST.LINEAR(x,known_y,known_x)Forecast using linear regression
FORMULATEXTlookupFORMULATEXT(reference)Returns the formula string for a cell reference
FREQUENCYarrayFREQUENCY(data, bins)Calculates the frequency distribution of values
FTESTstatisticalFTEST(array1,array2)F-test (legacy)
FVfinancialFV(rate, nper, pmt)Future value
FVSCHEDULEfinancialFVSCHEDULE(principal, schedule)Future value with variable rates
GAMMAstatisticalGAMMA(x)Gamma function
GAMMA.DISTstatisticalGAMMA.DIST(x,alpha,beta,cumulative)Gamma distribution CDF/PDF
GAMMA.INVstatisticalGAMMA.INV(p,alpha,beta)Gamma inverse CDF
GAMMADISTstatisticalGAMMADIST(x,alpha,beta,cumulative)Gamma distribution (legacy)
GAMMAINVstatisticalGAMMAINV(p,alpha,beta)Gamma inverse CDF (legacy)
GAMMALNmathGAMMALN(x)Natural logarithm of the gamma function
GAMMALN.PRECISEmathGAMMALN.PRECISE(x)Natural logarithm of the gamma function (precise)
GAUSSstatisticalGAUSS(x)NORM.S.DIST(x,TRUE) - 0.5
GCDmathGCD(value1,...)Greatest common divisor
GEOMEANstatisticalGEOMEAN(value1,...)Geometric mean
GESTEPengineeringGESTEP(number, [step])Test whether a number is greater than or equal to a step value
GETPIVOTDATAlookupGETPIVOTDATA(data_field, pivot_table, ...)Retrieves data from a PivotTable
GROWTHarrayGROWTH(known_y, [known_x], [new_x], [const])Returns values along an exponential trend
HARMEANstatisticalHARMEAN(value1,...)Harmonic mean
HEX2BINengineeringHEX2BIN(number, [places])Convert hexadecimal to binary
HEX2DECengineeringHEX2DEC(number)Convert hexadecimal to decimal
HEX2OCTengineeringHEX2OCT(number, [places])Convert hexadecimal to octal
HLOOKUPlookupHLOOKUP(search_key, range, index, [is_sorted])Searches first row of range, returns value from index row
HOURdateHOUR(time)Hour component of a time serial number
HSTACKarrayHSTACK(array1, ...)Horizontally stacks arrays
HYPERLINKwebHYPERLINK(url, [link_label])Return link label (or url if no label)
HYPGEOM.DISTstatisticalHYPGEOM.DIST(x,n,k,pop,cumulative)Hypergeometric distribution
HYPGEOMDISTstatisticalHYPGEOMDIST(x,n,k,pop)Hypergeometric PMF (legacy)
IFlogicalIF(condition, true_val, false_val)Conditional value
IFERRORlogicalIFERROR(value, value_if_error)Return alternate value on error
IFNAlogicalIFNA(value, value_if_na)Return alternate value on #N/A
IFSlogicalIFS(cond1, val1,...)First value whose condition is true
IMABSengineeringIMABS(complex)Absolute value of a complex number
IMAGINARYengineeringIMAGINARY(complex)Imaginary part of a complex number
IMARGUMENTengineeringIMARGUMENT(complex)Argument (angle) of a complex number
IMCONJUGATEengineeringIMCONJUGATE(complex)Complex conjugate
IMCOSengineeringIMCOS(complex)Cosine of a complex number
IMCOSHengineeringIMCOSH(complex)Hyperbolic cosine of a complex number
IMCOTengineeringIMCOT(complex)Cotangent of a complex number
IMCOTHengineeringIMCOTH(complex)Hyperbolic cotangent of a complex number
IMCSCengineeringIMCSC(complex)Cosecant of a complex number
IMCSCHengineeringIMCSCH(complex)Hyperbolic cosecant of a complex number
IMDIVengineeringIMDIV(complex1, complex2)Divide complex numbers
IMEXPengineeringIMEXP(complex)e raised to a complex power
IMLNengineeringIMLN(complex)Natural log of a complex number
IMLOGengineeringIMLOG(complex, base)Logarithm of a complex number to a given base
IMLOG10engineeringIMLOG10(complex)Base-10 log of a complex number
IMLOG2engineeringIMLOG2(complex)Base-2 log of a complex number
IMPOWERengineeringIMPOWER(complex, number)Complex number raised to a power
IMPRODUCTengineeringIMPRODUCT(complex1, ...)Product of complex numbers
IMREALengineeringIMREAL(complex)Real part of a complex number
IMSECengineeringIMSEC(complex)Secant of a complex number
IMSECHengineeringIMSECH(complex)Hyperbolic secant of a complex number
IMSINengineeringIMSIN(complex)Sine of a complex number
IMSINHengineeringIMSINH(complex)Hyperbolic sine of a complex number
IMSQRTengineeringIMSQRT(complex)Square root of a complex number
IMSUBengineeringIMSUB(complex1, complex2)Subtract complex numbers
IMSUMengineeringIMSUM(complex1, ...)Sum of complex numbers
IMTANengineeringIMTAN(complex)Tangent of a complex number
IMTANHengineeringIMTANH(complex)Hyperbolic tangent of a complex number
INDEXlookupINDEX(array, row, [col])Returns the value at the given 1-based row (and optionally col) in an array
INDIRECTlookupINDIRECT(ref_text, [a1])Returns the value referenced by a cell address string
INTmathINT(number)Round down to nearest integer
INTERCEPTstatisticalINTERCEPT(known_y,known_x)Intercept of linear regression
INTRATEfinancialINTRATE(settlement, maturity, investment, redemption, [basis])Interest rate for fully invested security
IPMTfinancialIPMT(rate, per, nper, pv, [fv], [type])Interest payment for a period
IRRfinancialIRR(values, [guess])Internal rate of return
ISBETWEENoperatorISBETWEEN(value, lower, upper, [lower_inclusive], [upper_inclusive])Returns TRUE if value is between lower and upper bounds
ISBLANKlogicalISBLANK(value)True if value is blank
ISDATElogicalISDATE(value)True if value is a date
ISEMAILlogicalISEMAIL(value)True if value is a valid email address
ISERRlogicalISERR(value)True if value is an error other than #N/A
ISERRORlogicalISERROR(value)True if value is an error
ISEVENmathISEVEN(number)Returns TRUE if number is even
ISFORMULAlogicalISFORMULA(value)True if the cell contains a formula
ISLOGICALlogicalISLOGICAL(value)True if value is a logical (boolean)
ISNAlogicalISNA(value)True if value is #N/A
ISNONTEXTlogicalISNONTEXT(value)True if value is not text
ISNUMBERlogicalISNUMBER(value)True if value is a number
ISO.CEILINGmathISO.CEILING(number, [significance])ISO standard ceiling; identical to CEILING.PRECISE
ISODDmathISODD(number)Returns TRUE if number is odd
ISOWEEKNUMdateISOWEEKNUM(date)ISO week number of the year for a date
ISPMTfinancialISPMT(rate, per, nper, pv)Interest paid for a period (straight line)
ISREFlogicalISREF(value)True if value is a cell reference
ISTEXTlogicalISTEXT(value)True if value is text
ISURLwebISURL(value)Return TRUE if value is a URL string
ISZONEDtimezoneISZONED(value)TRUE if the value is a zone-aware instant
JOINtextJOIN(delimiter, value1, ...)Join values with delimiter
KURTstatisticalKURT(value1,...)Excess kurtosis
LAMBDAlogicalLAMBDA(param1, ..., body)Create a lambda function
LARGEstatisticalLARGE(array,k)k-th largest value
LCMmathLCM(value1,...)Least common multiple
LEFTtextLEFT(text, num_chars)Left portion of a string
LEFTBtextLEFTB(text, num_bytes)Left N bytes of text
LENtextLEN(text)Number of characters in text
LENBtextLENB(text)Number of bytes in text
LETlogicalLET(name1, val1, ..., body)Bind named values and evaluate body
LINESTarrayLINEST(known_y, [known_x], [const], [stats])Returns linear regression statistics
LNmathLN(number)Natural logarithm
LOGmathLOG(number, base)Logarithm to specified base
LOG10mathLOG10(number)Base-10 logarithm
LOGESTarrayLOGEST(known_y, [known_x], [const], [stats])Returns exponential regression statistics
LOGINVstatisticalLOGINV(p,mean,stdev)Lognormal inverse CDF (legacy)
LOGNORM.DISTstatisticalLOGNORM.DIST(x,mean,stdev,cumulative)Lognormal distribution
LOGNORM.INVstatisticalLOGNORM.INV(p,mean,stdev)Lognormal inverse CDF
LOGNORMDISTstatisticalLOGNORMDIST(x,mean,stdev)Lognormal CDF (legacy)
LOOKUPlookupLOOKUP(search_key, search_range, [result_range])Approximate lookup in sorted range
LOWERtextLOWER(text)Convert to lowercase
MAKEARRAYarrayMAKEARRAY(rows, cols, lambda)Creates an array using a LAMBDA for each cell value
MAParrayMAP(array1, [array2, ...], lambda)Maps a LAMBDA over one or more arrays
MARGINOFERRORstatisticalMARGINOFERROR(data,confidence)Margin of error
MATCHlookupMATCH(search_key, range, [match_type])Returns 1-based position of first match
MAXstatisticalMAX(value1,...)Maximum value
MAXAstatisticalMAXA(value1,...)Maximum including booleans and text
MAXIFSstatisticalMAXIFS(max_range,criteria_range1,criteria1,...)Maximum with multiple criteria
MDETERMarrayMDETERM(array)Returns the matrix determinant
MDURATIONfinancialMDURATION(settlement, maturity, coupon, yld, frequency, [basis])Modified duration
MEDIANstatisticalMEDIAN(value1,...)Median value
MIDtextMID(text, start, num_chars)Substring from middle of text
MIDBtextMIDB(text, start_byte, num_bytes)Substring by byte position
MINstatisticalMIN(value1,...)Minimum value
MINAstatisticalMINA(value1,...)Minimum including booleans and text
MINIFSstatisticalMINIFS(min_range,criteria_range1,criteria1,...)Minimum with multiple criteria
MINUTEdateMINUTE(time)Minute component of a time serial number
MINVERSEarrayMINVERSE(array)Returns the matrix inverse
MIRRfinancialMIRR(values, finance_rate, reinvest_rate)Modified internal rate of return
MMULTarrayMMULT(array1, array2)Returns the matrix product of two arrays
MODmathMOD(number, divisor)Remainder after division
MODEstatisticalMODE(value1,...)Most frequent value
MODE.MULTstatisticalMODE.MULT(value1,...)All most frequent values
MODE.SNGLstatisticalMODE.SNGL(value1,...)Most frequent value
MONTHdateMONTH(date)Month number from a date serial number
MROUNDmathMROUND(number, multiple)Round to nearest multiple
MULTINOMIALmathMULTINOMIAL(value1,...)Multinomial coefficient of given arguments
MUNITmathMUNIT(dimension)Returns identity matrix of given dimension
NlogicalN(value)Convert value to number
NAlogicalNA()Returns the #N/A error value
NEGBINOM.DISTstatisticalNEGBINOM.DIST(x,r,p,cumulative)Negative binomial CDF/PMF
NEGBINOMDISTstatisticalNEGBINOMDIST(x,r,p)Negative binomial PMF (legacy)
NETWORKDAYSdateNETWORKDAYS(start,end,[holidays])Number of working days between two dates
NETWORKDAYS.INTLdateNETWORKDAYS.INTL(start,end,[weekend],[holidays])Working days between dates with custom weekends
NOMINALfinancialNOMINAL(effect_rate, npery)Nominal annual interest rate
NORM.DISTstatisticalNORM.DIST(x,mean,stdev,cumulative)Normal CDF/PDF
NORM.INVstatisticalNORM.INV(p,mean,stdev)Normal inverse CDF
NORM.S.DISTstatisticalNORM.S.DIST(x,cumulative)Standard normal CDF/PDF
NORM.S.INVstatisticalNORM.S.INV(p)Standard normal inverse CDF
NORMDISTstatisticalNORMDIST(x,mean,stdev,cumulative)Normal CDF/PDF (legacy)
NORMINVstatisticalNORMINV(p,mean,stdev)Normal inverse CDF (legacy)
NORMSDISTstatisticalNORMSDIST(x)Standard normal CDF (legacy)
NORMSINVstatisticalNORMSINV(p)Standard normal inverse CDF (legacy)
NOTlogicalNOT(value)Logical negation
NOWdateNOW()Current date and time as a serial number
NPERfinancialNPER(rate, pmt, pv)Number of payment periods
NPVfinancialNPV(rate, value1,...)Net present value
OCT2BINengineeringOCT2BIN(number, [places])Convert octal to binary
OCT2DECengineeringOCT2DEC(number)Convert octal to decimal
OCT2HEXengineeringOCT2HEX(number, [places])Convert octal to hexadecimal
ODDmathODD(number)Round up to nearest odd integer
OFFSETlookupOFFSET(reference, rows, cols, [height], [width])Returns a range offset from a reference
ORlogicalOR(value1,...)True if any argument is true
PDURATIONfinancialPDURATION(rate, pv, fv)Periods required to reach a value
PEARSONstatisticalPEARSON(array1,array2)Pearson correlation coefficient
PERCENTILEstatisticalPERCENTILE(array,k)k-th percentile (inclusive)
PERCENTILE.EXCstatisticalPERCENTILE.EXC(array,k)Exclusive percentile
PERCENTILE.INCstatisticalPERCENTILE.INC(array,k)Inclusive percentile
PERCENTRANKstatisticalPERCENTRANK(array,x,[sig])Percentile rank (inclusive)
PERCENTRANK.EXCstatisticalPERCENTRANK.EXC(array,x,[sig])Exclusive percentile rank
PERCENTRANK.INCstatisticalPERCENTRANK.INC(array,x,[sig])Inclusive percentile rank
PERMUTstatisticalPERMUT(n,k)Number of permutations
PERMUTATIONAstatisticalPERMUTATIONA(n,k)Permutations with repetition
PHIstatisticalPHI(x)Standard normal PDF
PImathPI()The value of pi (3.14159...)
PMTfinancialPMT(rate, nper, pv)Periodic payment for a loan
POISSONstatisticalPOISSON(x,mean,cumulative)Poisson distribution (legacy)
POISSON.DISTstatisticalPOISSON.DIST(x,mean,cumulative)Poisson CDF/PMF
POWERmathPOWER(number, power)Number raised to a power
PPMTfinancialPPMT(rate, per, nper, pv, [fv], [type])Principal payment for a period
PRICEfinancialPRICE(settlement, maturity, rate, yld, redemption, frequency, [basis])Price per $100 face value
PRICEDISCfinancialPRICEDISC(settlement, maturity, discount, redemption, [basis])Price of discounted security
PRICEMATfinancialPRICEMAT(settlement, maturity, issue, rate, yld, [basis])Price at maturity
PROBstatisticalPROB(x_range,prob_range,lo,[hi])Probability from distribution
PRODUCTmathPRODUCT(value1,...)Product of arguments
PROPERtextPROPER(text)Capitalize first letter of each word
PVfinancialPV(rate, nper, pmt)Present value
QUARTILEstatisticalQUARTILE(array,quart)Quartile (inclusive)
QUARTILE.EXCstatisticalQUARTILE.EXC(array,quart)Exclusive quartile
QUARTILE.INCstatisticalQUARTILE.INC(array,quart)Inclusive quartile
QUERYqueryQUERY(data, query, [headers])Run a pseudo-SQL query (select/where/group by/order by/limit/label) over a range
QUOTIENTmathQUOTIENT(numerator, denominator)Integer portion of division
RADIANSmathRADIANS(angle)Convert degrees to radians
RANDmathRAND()Random number between 0 and 1
RANDARRAYmathRANDARRAY([rows], [cols])Array of random numbers
RANDBETWEENmathRANDBETWEEN(low, high)Random integer between two values
RANKstatisticalRANK(number,ref,[order])Rank of number (ties=lowest)
RANK.AVGstatisticalRANK.AVG(number,ref,[order])Rank with average for ties
RANK.EQstatisticalRANK.EQ(number,ref,[order])Rank with equal (lowest) for ties
RATEfinancialRATE(nper, pmt, pv)Interest rate per period
RECEIVEDfinancialRECEIVED(settlement, maturity, investment, discount, [basis])Amount received at maturity
REDUCEarrayREDUCE(initial_value, array, lambda)Reduces an array to a single value using a LAMBDA
REGEXEXTRACTtextREGEXEXTRACT(text, pattern)Extract first regex match from text
REGEXMATCHtextREGEXMATCH(text, pattern)True if text matches regex pattern
REGEXREPLACEtextREGEXREPLACE(text, pattern, replacement)Replace regex matches in text
REPLACEtextREPLACE(text, start, num_chars, new_text)Replace portion of text
REPLACEBtextREPLACEB(text, start_byte, num_bytes, new_text)Replace portion of text by byte position
REPTtextREPT(text, number_times)Repeat text N times
RIGHTtextRIGHT(text, num_chars)Right portion of a string
RIGHTBtextRIGHTB(text, num_bytes)Right N bytes of text
ROMANtextROMAN(number, [style])Convert integer to Roman numeral string
ROUNDmathROUND(number, digits)Round to specified decimal places
ROUNDDOWNmathROUNDDOWN(number, digits)Round toward zero
ROUNDUPmathROUNDUP(number, digits)Round away from zero
ROWlookupROW([cell_ref])Returns the row number of a cell reference
ROWSarrayROWS(array)Returns the number of rows in an array or range
RRIfinancialRRI(nper, pv, fv)Equivalent interest rate for growth
RSQstatisticalRSQ(known_y,known_x)R-squared of linear regression
SCANarraySCAN(initial_value, array, lambda)Returns running accumulation using a LAMBDA
SEARCHtextSEARCH(find_text, within_text, [start_num])Case-insensitive search with wildcards
SEARCHBtextSEARCHB(find_text, within_text, [start_num])Case-insensitive byte-position search with wildcards
SECmathSEC(angle)Secant of an angle in radians
SECHmathSECH(number)Hyperbolic secant
SECONDdateSECOND(time)Second component of a time serial number
SEQUENCEmathSEQUENCE(rows, [cols], [start], [step])Generate a sequence of numbers
SERIESSUMmathSERIESSUM(x, n, m, coefficients)Sum of a power series
SHEETlookupSHEET([name])Returns the sheet number of the current or named sheet
SHEETSlogicalSHEETS([reference])Number of sheets in a reference or workbook
SIGNmathSIGN(number)Sign of a number: -1, 0, or 1
SINmathSIN(angle)Sine of an angle in radians
SINHmathSINH(number)Hyperbolic sine
SKEWstatisticalSKEW(value1,...)Sample skewness
SKEW.PstatisticalSKEW.P(value1,...)Population skewness
SLNfinancialSLN(cost, salvage, life)Straight-line depreciation
SLOPEstatisticalSLOPE(known_y,known_x)Slope of linear regression
SMALLstatisticalSMALL(array,k)k-th smallest value
SORTarraySORT(array, [sort_index], [sort_order], [by_col])Sorts an array
SORTBYarraySORTBY(array, by_array1, [sort_order1], ...)Sorts an array based on the values in corresponding arrays
SORTNfilterSORTN(array, [n], [display_ties_mode], ...)Return top N rows of an array sorted
SPLITtextSPLIT(text, delimiter, [split_by_each], [remove_empty])Split text into array by delimiter
SQRTmathSQRT(number)Square root
SQRTPImathSQRTPI(n)Square root of n times pi
STANDARDIZEstatisticalSTANDARDIZE(x,mean,stdev)Standardize a value
STDEVstatisticalSTDEV(value1,...)Sample standard deviation
STDEV.PstatisticalSTDEV.P(value1,...)Population standard deviation
STDEV.SstatisticalSTDEV.S(value1,...)Sample standard deviation
STDEVAstatisticalSTDEVA(value1,...)Sample standard deviation including text and logical values
STDEVPstatisticalSTDEVP(value1,...)Population standard deviation
STDEVPAstatisticalSTDEVPA(value1,...)Population standard deviation including text and logical values
STEYXstatisticalSTEYX(known_y,known_x)Standard error of regression
SUBSTITUTEtextSUBSTITUTE(text, old, new, instance)Replace occurrences of a substring
SUBTOTALmathSUBTOTAL(function_code, ref1, ...)Apply function to a list (not supported with arrays)
SUMmathSUM(value1,...)Sum of arguments
SUMIFmathSUMIF(range, criterion, [sum_range])Sum cells where range matches criterion
SUMIFSmathSUMIFS(sum_range, range1, criterion1, ...)Sum cells where all criteria match
SUMPRODUCTarraySUMPRODUCT(array1, [array2], ...)Returns the sum of products of corresponding elements
SUMSQmathSUMSQ(value1,...)Sum of squares of arguments
SUMX2MY2arraySUMX2MY2(array_x, array_y)Returns sum of (x^2 - y^2)
SUMX2PY2arraySUMX2PY2(array_x, array_y)Returns sum of (x^2 + y^2)
SUMXMY2arraySUMXMY2(array_x, array_y)Returns sum of squares of differences
SWITCHlogicalSWITCH(expr, val1, result1,...)Match expression against values
SYDfinancialSYD(cost, salvage, life, per)Sum-of-years' digits depreciation
TtextT(value)Return text if value is text, else empty string
T.DISTstatisticalT.DIST(x,df,cumulative)Student's t CDF/PDF
T.DIST.2TstatisticalT.DIST.2T(x,df)Student's t two-tailed CDF
T.DIST.RTstatisticalT.DIST.RT(x,df)Student's t right-tail CDF
T.INVstatisticalT.INV(p,df)Student's t inverse CDF
T.INV.2TstatisticalT.INV.2T(p,df)Student's t two-tailed inverse
T.TESTstatisticalT.TEST(array1,array2,tails,type)Student's t-test
TANmathTAN(angle)Tangent of an angle in radians
TANHmathTANH(number)Hyperbolic tangent
TBILLEQfinancialTBILLEQ(settlement, maturity, discount)T-bill bond-equivalent yield
TBILLPRICEfinancialTBILLPRICE(settlement, maturity, discount)T-bill price
TBILLYIELDfinancialTBILLYIELD(settlement, maturity, pr)T-bill yield
TDISTstatisticalTDIST(x,df,tails)Student's t distribution (legacy)
TEXTtextTEXT(value, format)Format number as text
TEXTJOINtextTEXTJOIN(delimiter, ignore_empty, value1, ...)Join values with delimiter, optionally skip empty
TIMEdateTIME(hour,minute,second)Creates a time serial number from components
TIMEVALUEdateTIMEVALUE(time_text)Converts a time string to a fractional serial number
TINVstatisticalTINV(p,df)Student's t two-tailed inverse (legacy)
TOCOLarrayTOCOL(array, [ignore], [scan_by_col])Converts an array to a single column
TODAYdateTODAY()Current date as a serial number
TOROWarrayTOROW(array, [ignore], [scan_by_col])Converts an array to a single row
TO_DATEparserTO_DATE(value)Converts a number to a date serial value
TO_DOLLARSparserTO_DOLLARS(value)Formats a number as a dollar amount
TO_PERCENTparserTO_PERCENT(value)Formats a number as a percentage
TO_PURE_NUMBERparserTO_PURE_NUMBER(value)Strips formatting and returns a plain number
TO_TEXTparserTO_TEXT(value)Converts a value to its text representation
TRANSPOSEarrayTRANSPOSE(array)Transposes the rows and columns of an array
TRENDarrayTREND(known_y, [known_x], [new_x], [const])Returns values along a linear trend
TRIMtextTRIM(text)Remove extra whitespace
TRIMMEANstatisticalTRIMMEAN(data,percent)Trimmed mean
TRUElogicalTRUE()Logical true value
TRUNCmathTRUNC(number, digits)Truncate to integer or decimal places
TYPElogicalTYPE(value)Number indicating value type
TZABBRtimezoneTZABBR(zoned)Zone abbreviation at this instant (e.g. CEST), display only
TZADDtimezoneTZADD(zoned,amount,unit,[policy])Adds time: seconds/minutes/hours are absolute, days/weeks/months/years are DST-aware calendar units
TZBOARDtimezoneTZBOARD(anchor,zones,[base])Technical world-clock board: one row per zone {zone,local,offset,delta,rollover,abbrev,dst}
TZCANONICALtimezoneTZCANONICAL(zone)Validates and normalizes a zone name (best-effort; IANA links are not resolved)
TZCOMPARETEXTtimezoneTZCOMPARETEXT(anchor,zones,[base])Alias of TZWORLDCLOCK
TZCONVERTtimezoneTZCONVERT(zoned,target_zone)Same instant shown as the local time in another zone
TZDATETIMEtimezoneTZDATETIME(year,month,day,hour,minute,second,zone,[policy])Builds a zone-aware instant from a wall-clock time in a zone
TZDBVERSIONtimezoneTZDBVERSION()IANA time-zone database version the engine is using
TZDIFFtimezoneTZDIFF(zoned_a,zoned_b,[unit])Elapsed time from b to a on the absolute timeline (DST-immune)
TZFROMEPOCHtimezoneTZFROMEPOCH(unix_seconds,zone)Builds a zone-aware instant from a Unix timestamp
TZINWINDOWtimezoneTZINWINDOW(zoned,start_local,end_local,[days_mask])TRUE if the local time-of-day falls in [start,end); days_mask is 7 chars Sun..Sat
TZISDSTtimezoneTZISDST(zoned)TRUE if daylight-saving is in effect at this instant
TZLOCALIZEtimezoneTZLOCALIZE(date_serial,zone,[policy])Interprets a plain date/time serial as a wall-clock reading in a zone
TZLOCALSTATUStimezoneTZLOCALSTATUS(year,month,day,hour,minute,zone)Classifies a local time as unique, gap (nonexistent) or fold (ambiguous)
TZNOWtimezoneTZNOW(zone)The current moment stamped with the given zone (volatile; pinned during recalc)
TZOFFSETtimezoneTZOFFSET(zoned)Offset from UTC in minutes at this instant (DST-resolved)
TZOFFSETDIFFtimezoneTZOFFSETDIFF(zoned_a,zoned_b)Signed difference in minutes between two zones' offsets
TZOVERLAPtimezoneTZOVERLAP(zones,start_local,end_local,date_serial,[granularity_min])First daily window when the local time is within [start,end) in ALL zones; [start,end] instants or 'No overlap'
TZPARSEtimezoneTZPARSE(text,[zone])Parses an ISO/RFC-9557 timestamp into a zone-aware instant
TZPARTtimezoneTZPART(zoned,unit)Local wall-clock field: year|month|day|hour|minute|second|weekday
TZSERIALtimezoneTZSERIAL(zoned)Drops the zone, returning the wall-clock time as a plain date serial
TZSTRINGtimezoneTZSTRING(zoned)Canonical RFC-9557 string for a zone-aware instant
TZTABLEtimezoneTZTABLE(anchor,zones,[base])Alias of TZBOARD
TZTEXTtimezoneTZTEXT(zoned,[format])Human-friendly local string; optional strftime format
TZVALIDtimezoneTZVALID(zone)TRUE if the text is a valid IANA zone name or fixed offset
TZWORLDCLOCKtimezoneTZWORLDCLOCK(anchor,zones,[base])Friendly one-line summary comparing the time across N zones
UNICHARtextUNICHAR(number)Unicode character from code point
UNICODEtextUNICODE(text)Unicode code point of first character
UNIQUEarrayUNIQUE(array, [by_col], [exactly_once])Returns unique rows or columns from an array
UPPERtextUPPER(text)Convert to uppercase
VALUEtextVALUE(text)Convert text to number
VARstatisticalVAR(value1,...)Sample variance
VAR.PstatisticalVAR.P(value1,...)Population variance
VAR.SstatisticalVAR.S(value1,...)Sample variance
VARAstatisticalVARA(value1,...)Sample variance including text and logical values
VARPstatisticalVARP(value1,...)Population variance
VARPAstatisticalVARPA(value1,...)Population variance including text and logical values
VDBfinancialVDB(cost, salvage, life, start, end, [factor], [no_switch])Variable-rate declining balance
VLOOKUPlookupVLOOKUP(search_key, range, index, [is_sorted])Searches first column of range, returns value from index column
VSTACKarrayVSTACK(array1, ...)Vertically stacks arrays
WEEKDAYdateWEEKDAY(date,[type])Day of week as a number
WEEKNUMdateWEEKNUM(date,[type])Week number of the year for a date
WEIBULLstatisticalWEIBULL(x,alpha,beta,cumulative)Weibull distribution (legacy)
WEIBULL.DISTstatisticalWEIBULL.DIST(x,alpha,beta,cumulative)Weibull distribution
WORKDAYdateWORKDAY(start,days,[holidays])Date N working days from start date
WORKDAY.INTLdateWORKDAY.INTL(start,days,[weekend],[holidays])Date N working days from start with custom weekends
WRAPCOLSarrayWRAPCOLS(vector, wrap_count, [pad_with])Wraps a vector into columns of the given length
WRAPROWSarrayWRAPROWS(vector, wrap_count, [pad_with])Wraps a vector into rows of the given length
XIRRfinancialXIRR(values, dates, [guess])IRR for irregular cash flows
XLOOKUPlookupXLOOKUP(search_key, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])Modern lookup function with fallback and match options
XMATCHlookupXMATCH(search_key, lookup_array, [match_mode], [search_mode])Modern MATCH function with match and search mode options
XNPVfinancialXNPV(rate, values, dates)NPV for irregular cash flows
XORlogicalXOR(value1,...)True if an odd number of arguments are true
YEARdateYEAR(date)Year from a date serial number
YEARFRACdateYEARFRAC(start,end,[basis])Fraction of year between two dates
YIELDfinancialYIELD(settlement, maturity, rate, pr, redemption, frequency, [basis])Yield on a coupon bond
YIELDDISCfinancialYIELDDISC(settlement, maturity, pr, redemption, [basis])Annual yield for discounted security
YIELDMATfinancialYIELDMAT(settlement, maturity, issue, rate, pr, [basis])Annual yield at maturity
Z.TESTstatisticalZ.TEST(data,mu,[sigma])Z-test p-value
ZTESTstatisticalZTEST(data,mu,[sigma])Z-test p-value (legacy)
10521/10527 · 99.9%
What is Google Sheets conformance?
truecalc evaluates spreadsheet formulas. To verify correctness, every supported formula is run against real Google Sheets spreadsheets that produce the expected output. On every commit to main, truecalc re-runs all 10527 conformance cases and compares results. A ✓ means truecalc matches Google Sheets exactly; ⚠ means a known, intentional deviation (e.g. a locale difference or an unsupported edge case).

Property tests go further: for each formula category, randomly generated inputs are checked against mathematical invariants (e.g. ABS(x) ≥ 0 for all x, SQRT(x)² ≈ x for x > 0). Each property runs 500 random cases per commit.

About the totals: The Total column counts formula evaluations — each conformance row and each property case counts as one. GitHub Checks reports 3,643 Rust test functions: 2,872 unit tests (shown in column) + 159 property test functions (shown as 159×500 cases above) + 612 conformance/integration test functions.
Category Unit Tests Google Sheets Conformance Property Cases Total
Array42547/547 ✓1,000 (2×500)1,589
Database35182/182 ✓3,500 (7×500)3,717
Date369418/418 ✓2,500 (5×500)3,287
Engineering245886/888 ⚠5,500 (11×500)6,633
Filter1180/80 ✓4,500 (9×500)4,591
Financial1491,208/1,208 ✓2,000 (4×500)3,357
Info0256/256 ✓4,500 (9×500)4,756
Logical121263/263 ✓3,500 (7×500)3,884
Lookup69392/392 ✓1,000 (2×500)1,461
Math5362,006/2,006 ✓8,000 (16×500)10,542
Operator87250/250 ✓7,500 (15×500)7,837
Parser8392/92 ✓4,000 (8×500)4,175
Query3737
Statistical4833,156/3,156 ✓5,000 (10×500)8,639
Text298729/733 ⚠4,000 (8×500)5,031
Timezone4747
Volatile03,500 (7×500)3,500
Web2956/56 ✓6,000 (12×500)6,085
Total 2,872 10,521/10,527 66,000 (132×500) ~79,399
coverage · 89.7%
What is code coverage?
Line coverage is measured by cargo-llvm-cov on the truecalc-core crate. It tracks which source lines are executed across all unit tests, integration tests, conformance tests, and property tests combined. A higher percentage means more of the implementation has been exercised by the test suite.