Skip to content

Instantly share code, notes, and snippets.

@yostinso
Last active October 19, 2022 00:07
Show Gist options
  • Save yostinso/c4f058fa9f3b53a80d311e1d36c0f68e to your computer and use it in GitHub Desktop.
Save yostinso/c4f058fa9f3b53a80d311e1d36c0f68e to your computer and use it in GitHub Desktop.
Excel function syntax highlighting for vim
" Excel function syntax file
" Language: Excel functions
" Maintainer: E.O. Stinson
" Latest Revision: 17 October 2022
if exists("b:current_syntax")
finish
endif
let b:current_syntax = "excel_functions"
" Function list
syn keyword excelFunctionNames0 BETADIST BETAINV BINOMDIST CHIDIST CHIINV CHITEST CONCATENATE CONFIDENCE COVAR CRITBINOM EXPONDIST FDIST FINV FLOOR FORECAST.LINEAR FTEST GAMMADIST GAMMAINV HYPGEOMDIST LOGINV LOGNORMDIST MODE NEGBINOMDIST NORMDIST NORMINV NORMSDIST NORMSINV PERCENTILE PERCENTRANK POISSON QUARTILE RANK STDEV STDEVP TDIST TINV TTEST VAR VARP WEIBULL ZTEST CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE DAVERAGE DCOUNT DCOUNTA DGET DMAX DMIN DPRODUCT DSTDEV DSTDEVP DSUM DVAR DVARP DATE DATEDIF DATEVALUE DAY DAYS DAYS360 EDATE EOMONTH HOUR ISOWEEKNUM MINUTE MONTH NETWORKDAYS NETWORKDAYS.INTL NOW SECOND TIME TIMEVALUE TODAY WEEKDAY WEEKNUM WORKDAY WORKDAY.INTL YEAR YEARFRAC BESSELI BESSELJ BESSELK BESSELY BIN2DEC BIN2HEX BIN2OCT BITAND BITLSHIFT BITOR BITRSHIFT BITXOR COMPLEX CONVERT DEC2BIN DEC2HEX DEC2OCT DELTA ERF ERF.PRECISE ERFC ERFC.PRECISE GESTEP HEX2BIN HEX2DEC HEX2OCT IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN OCT2BIN OCT2DEC OCT2HEX ACCRINT ACCRINTM AMORDEGRC AMORLINC COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD CUMIPMT CUMPRINC DB DDB DISC DOLLARDE DOLLARFR DURATION EFFECT FV FVSCHEDULE INTRATE IPMT IRR ISPMT MDURATION MIRR NOMINAL NPER NPV ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD PDURATION PMT PPMT PRICE PRICEDISC PRICEMAT PV RATE RECEIVED RRI SLN SYD TBILLEQ TBILLPRICE TBILLYIELD VDB XIRR XNPV YIELD YIELDDISC YIELDMAT CELL ERROR.TYPE INFO ISBLANK ISEVEN ISFORMULA ISOMITTED N NA SHEET SHEETS TYPE AND BYCOL BYROW FALSE IF IFERROR IFNA IFS LAMBDA LET MAKEARRAY MAP NOT OR REDUCE SCAN Syntax TRUE XOR ADDRESS AREAS CHOOSE CHOOSECOLS CHOOSEROWS COLUMN COLUMNS DROP Expand FILTER FORMULATEXT GETPIVOTDATA HLOOKUP HSTACK HYPERLINK INDEX INDIRECT ISNUMBER LOOKUP MATCH OFFSET ROW ROWS RTD SORT SORTBY contained
syn keyword excelFunctionNames1 TAKE TOCOL TOROW TRANSPOSE UNIQUE VLOOKUP VSTACK WRAPCOLS WRAPROWS XLOOKUP XMATCH ABS ACOS ACOSH ACOT ACOTH AGGREGATE ARABIC ASIN ASINH ATAN ATAN2 ATANH BASE CEILING CEILING.MATH CEILING.PRECISE COMBIN COMBINA COS COSH COT COTH CSC CSCH DECIMAL DEGREES EVEN EXP FACT FACTDOUBLE FLOOR.MATH FLOOR.PRECISE GCD INT ISO.CEILING LCM LN LOG LOG10 MDETERM MINVERSE MMULT MOD MROUND MULTINOMIAL MUNIT ODD PI POWER PRODUCT QUOTIENT RADIANS RAND RANDARRAY RANDBETWEEN ROMAN ROUND ROUNDDOWN ROUNDUP SEC SECH SERIESSUM SEQUENCE SIGN SIN SINH SQRT SQRTPI SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 TAN TANH TRUNC AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BETA.DIST BETA.INV BINOM.DIST BINOM.DIST.RANGE BINOM.INV CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CONFIDENCE.NORM CONFIDENCE.T CORREL COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COVARIANCE.P COVARIANCE.S DEVSQ EXPON.DIST F.DIST F.DIST.RT F.INV F.INV.RT F.TEST FISHER FISHERINV FREQUENCY GAMMA GAMMA.DIST GAMMA.INV GAMMALN GAMMALN.PRECISE GAUSS GEOMEAN GROWTH HARMEAN HYPGEOM.DIST INTERCEPT KURT LARGE LINEST LOGEST LOGNORM.DIST LOGNORM.INV MAX MAXA MAXIFS MEDIAN MIN MINA MINIFS MODE.MULT MODE.SNGL NEGBINOM.DIST NORM.DIST NORM.INV NORM.S.DIST NORM.S.INV PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTRANK.EXC PERCENTRANK.INC PERMUT PERMUTATIONA PHI POISSON.DIST PROB QUARTILE.EXC QUARTILE.INC RANK.AVG RANK.EQ RSQ SKEW SKEW.P SLOPE SMALL STANDARDIZE STDEV.P STDEV.S STDEVA STDEVPA STEYX T.DIST T.DIST.2T T.DIST.RT T.INV T.INV.2T T.TEST TREND TRIMMEAN VAR.P VAR.S VARA VARPA WEIBULL.DIST Z.TEST ASC ARRAYTOTEXT BAHTTEXT CHAR CLEAN CODE CONCAT DBCS DOLLAR EXACT FIND FIXED LEFT LEN LOWER MID NUMBERVALUE PHONETIC PROPER REPLACE REPT RIGHT SEARCH SUBSTITUTE T Syntax TEXTAFTER TEXTBEFORE TEXTJOIN TEXTSPLIT TRIM UNICHAR UNICODE UPPER VALUE VALUETOTEXT ENCODEURL FILTERXML WEBSERVICE contained
syn cluster excelFunctionNames contains=excelFunctionNames0,excelFunctionNames1
" Simple syntax
syn match excelIdBare "[ ,(\[\n+*/-]\@<=[a-zA-Z0-9_]\+" contained nextgroup=excelSubkey,excelComparison
syn match excelIdSpacesContent "[a-zA-Z0-9_ ]\+" contained transparent contains=NONE
syn region excelIdSpaces start="'" end="'" contains=excelIdSpacesContent nextgroup=excelSubkey,excelComparison
syn region excelIdBracket start="\[" end="\]" contains=excelIdSpacesContent nextgroup=excelComparison
syn region excelSubkey start="\[@\?" end="\]" contains=excelIdBare,excelIdBracket
syn match excelNumber "\d\+\(\.\d\+\)\?" contained nextgroup=excelComparison
syn match excelStringContents '[^"]\+$' contained transparent contains=NONE
syn region excelString start='"' end='"' skip='\\"' oneline contained contains=excelStringContents
syn cluster excelScalars contains=excelNumber,excelIdBare,excelIdSpaces,excelString
" Ranges
syn match excelRange "\$\?[A-Z]\+\(\$\?[0-9]\+\)\?\(:\$\?[A-Z]\+\(\$\?[0-9]\+\)\?\)\?" contained
" All functions begin with =
syn match excelFunction "[A-Z\.]\+(\@=" contains=@excelFunctionNames nextgroup=excelFunctionArgs
syn match excelFunctionStart "\%^=" nextgroup=excelFunction,@excelScalars
" General-purpose comparison expressions
syn match excelComparison "\s*\(<>\|[><=+*/-]\)\s*" nextgroup=excelFunction,excelRange,@excelScalars,excelFunctionArgs
" Function syntax
syn region excelFunctionArgs matchgroup=excelFunctionSpecial start="(" end=")" contains=excelComparison,excelFunction,excelRange,excelFunctionArgs,@excelScalars fold
" Highlights
highlight default link excelFunctionStart Special
highlight default link excelFunctionNames0 Function
highlight default link excelFunctionNames1 Function
highlight default link excelFunctionSpecial Special
highlight default link excelNumber Constant
highlight default link excelIdBare Type
highlight default link excelIdBracket Type
highlight default link excelSubkey Type
highlight default link excelIdSpaces Type
highlight default link excelString String
highlight default link excelRange PreProc
highlight default link excelComparison Operator
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment