truecalc

CI run  ·  Updated: 2026-04-26 00:14 UTC

482 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
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
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
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
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
INDEXarrayINDEX(array, row, [col])Returns the value at the given row and column of an array
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
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
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
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
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
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)
8366/8368 · 100.0%
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 8368 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 2,879 Rust test functions: 2,620 unit tests (shown in column) + 159 property test functions (shown as 159×500 cases above) + 100 conformance/integration test functions.
Category Unit Tests Google Sheets Conformance Property Cases Total
Array42301/301 ✓1,000 (2×500)1,343
Database35175/175 ✓3,500 (7×500)3,710
Date348295/295 ✓2,500 (5×500)3,143
Engineering245841/841 ✓5,500 (11×500)6,586
Filter1120/20 ✓4,500 (9×500)4,531
Financial149182/182 ✓2,000 (4×500)2,331
Info0390/390 ✓4,500 (9×500)4,890
Logical114250/250 ✓3,500 (7×500)3,864
Lookup69361/361 ✓1,000 (2×500)1,430
Math5281,923/1,923 ✓8,000 (16×500)10,451
Operator75263/263 ✓7,500 (15×500)7,838
Parser8094/94 ✓4,000 (8×500)4,174
Statistical4802,557/2,557 ✓5,000 (10×500)8,037
Text305658/660 ⚠4,000 (8×500)4,965
Volatile03,500 (7×500)3,500
Web2956/56 ✓6,000 (12×500)6,085
Total 2,620 8,366/8,368 66,000 (132×500) ~76,988
coverage · 91.4%
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.