/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #ifndef INCLUDED_FORMULA_INC_CORE_RESOURCE_HRC #define INCLUDED_FORMULA_INC_CORE_RESOURCE_HRC #include #include #define NC_(Context, String) reinterpret_cast(Context "\004" u8##String) /** These English names are used to store/load ODFF as of ODF v1.2. */ // NAMES CAN ONLY BE CHANGED WHEN PROVIDING BACKWARD AND FORWARD COMPATIBILITY // such that at least two releases can already read the new name to be // introduced by a later release. // If there is a reason for another name for some function then add an // *additional* name to be recognized to sc/source/core/tool/compiler.cxx // ScCompiler::IsOpCode() in the if (mxSymbols->isODFF()) block. const std::pair RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF[] = { { "IF" , SC_OPCODE_IF }, { "IFERROR" , SC_OPCODE_IF_ERROR }, { "IFNA" , SC_OPCODE_IF_NA }, { "CHOOSE" , SC_OPCODE_CHOOSE }, { "(" , SC_OPCODE_OPEN }, { ")" , SC_OPCODE_CLOSE }, // SC_OPCODE_TABLE_REF_... not supported in ODFF { "{" , SC_OPCODE_ARRAY_OPEN }, { "}" , SC_OPCODE_ARRAY_CLOSE }, { "|" , SC_OPCODE_ARRAY_ROW_SEP }, { ";" , SC_OPCODE_ARRAY_COL_SEP }, { ";" , SC_OPCODE_SEP }, { "%" , SC_OPCODE_PERCENT_SIGN }, { "+" , SC_OPCODE_ADD }, { "-" , SC_OPCODE_SUB }, { "*" , SC_OPCODE_MUL }, { "/" , SC_OPCODE_DIV }, { "&" , SC_OPCODE_AMPERSAND }, { "^" , SC_OPCODE_POW }, { "=" , SC_OPCODE_EQUAL }, { "<>" , SC_OPCODE_NOT_EQUAL }, { "<" , SC_OPCODE_LESS }, { ">" , SC_OPCODE_GREATER }, { "<=" , SC_OPCODE_LESS_EQUAL }, { ">=" , SC_OPCODE_GREATER_EQUAL }, { "AND" , SC_OPCODE_AND }, { "OR" , SC_OPCODE_OR }, { "XOR" , SC_OPCODE_XOR }, { "!" , SC_OPCODE_INTERSECT }, { "~" , SC_OPCODE_UNION }, { ":" , SC_OPCODE_RANGE }, { "NOT" , SC_OPCODE_NOT }, { "NEG" , SC_OPCODE_NEG }, { "-" , SC_OPCODE_NEG_SUB }, { "PI" , SC_OPCODE_PI }, { "RAND" , SC_OPCODE_RANDOM }, { "TRUE" , SC_OPCODE_TRUE }, { "FALSE" , SC_OPCODE_FALSE }, { "TODAY" , SC_OPCODE_GET_ACT_DATE }, { "NOW" , SC_OPCODE_GET_ACT_TIME }, { "NA" , SC_OPCODE_NO_VALUE }, { "ORG.OPENOFFICE.CURRENT" , SC_OPCODE_CURRENT }, { "DEGREES" , SC_OPCODE_DEG }, { "RADIANS" , SC_OPCODE_RAD }, { "SIN" , SC_OPCODE_SIN }, { "COS" , SC_OPCODE_COS }, { "TAN" , SC_OPCODE_TAN }, { "COT" , SC_OPCODE_COT }, { "ASIN" , SC_OPCODE_ARC_SIN }, { "ACOS" , SC_OPCODE_ARC_COS }, { "ATAN" , SC_OPCODE_ARC_TAN }, { "ACOT" , SC_OPCODE_ARC_COT }, { "SINH" , SC_OPCODE_SIN_HYP }, { "COSH" , SC_OPCODE_COS_HYP }, { "TANH" , SC_OPCODE_TAN_HYP }, { "COTH" , SC_OPCODE_COT_HYP }, { "ASINH" , SC_OPCODE_ARC_SIN_HYP }, { "ACOSH" , SC_OPCODE_ARC_COS_HYP }, { "ATANH" , SC_OPCODE_ARC_TAN_HYP }, { "ACOTH" , SC_OPCODE_ARC_COT_HYP }, { "CSC" , SC_OPCODE_COSECANT }, { "SEC" , SC_OPCODE_SECANT }, { "CSCH" , SC_OPCODE_COSECANT_HYP }, { "SECH" , SC_OPCODE_SECANT_HYP }, { "EXP" , SC_OPCODE_EXP }, { "LN" , SC_OPCODE_LN }, { "SQRT" , SC_OPCODE_SQRT }, { "FACT" , SC_OPCODE_FACT }, { "YEAR" , SC_OPCODE_GET_YEAR }, { "MONTH" , SC_OPCODE_GET_MONTH }, { "DAY" , SC_OPCODE_GET_DAY }, { "HOUR" , SC_OPCODE_GET_HOUR }, { "MINUTE" , SC_OPCODE_GET_MIN }, { "SECOND" , SC_OPCODE_GET_SEC }, { "SIGN" , SC_OPCODE_PLUS_MINUS }, { "ABS" , SC_OPCODE_ABS }, { "INT" , SC_OPCODE_INT }, { "PHI" , SC_OPCODE_PHI }, { "GAUSS" , SC_OPCODE_GAUSS }, { "ISBLANK" , SC_OPCODE_IS_EMPTY }, { "ISTEXT" , SC_OPCODE_IS_STRING }, { "ISNONTEXT" , SC_OPCODE_IS_NON_STRING }, { "ISLOGICAL" , SC_OPCODE_IS_LOGICAL }, { "TYPE" , SC_OPCODE_TYPE }, { "CELL" , SC_OPCODE_CELL }, { "ISREF" , SC_OPCODE_IS_REF }, { "ISNUMBER" , SC_OPCODE_IS_VALUE }, { "ISFORMULA" , SC_OPCODE_IS_FORMULA }, { "ISNA" , SC_OPCODE_IS_NV }, { "ISERR" , SC_OPCODE_IS_ERR }, { "ISERROR" , SC_OPCODE_IS_ERROR }, { "ISEVEN" , SC_OPCODE_IS_EVEN }, { "ISODD" , SC_OPCODE_IS_ODD }, { "N" , SC_OPCODE_N }, { "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE }, { "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE }, { "CODE" , SC_OPCODE_CODE }, { "TRIM" , SC_OPCODE_TRIM }, { "UPPER" , SC_OPCODE_UPPER }, { "PROPER" , SC_OPCODE_PROPER }, { "LOWER" , SC_OPCODE_LOWER }, { "LEN" , SC_OPCODE_LEN }, { "T" , SC_OPCODE_T }, { "VALUE" , SC_OPCODE_VALUE }, { "CLEAN" , SC_OPCODE_CLEAN }, { "CHAR" , SC_OPCODE_CHAR }, { "JIS" , SC_OPCODE_JIS }, { "ASC" , SC_OPCODE_ASC }, { "UNICODE" , SC_OPCODE_UNICODE }, { "UNICHAR" , SC_OPCODE_UNICHAR }, { "LOG10" , SC_OPCODE_LOG10 }, { "EVEN" , SC_OPCODE_EVEN }, { "ODD" , SC_OPCODE_ODD }, { "LEGACY.NORMSDIST" , SC_OPCODE_STD_NORM_DIST }, { "COM.MICROSOFT.NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS }, { "FISHER" , SC_OPCODE_FISHER }, { "FISHERINV" , SC_OPCODE_FISHER_INV }, { "LEGACY.NORMSINV" , SC_OPCODE_S_NORM_INV }, { "COM.MICROSOFT.NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS }, { "GAMMALN" , SC_OPCODE_GAMMA_LN }, { "COM.MICROSOFT.GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS }, { "ORG.OPENOFFICE.ERRORTYPE" , SC_OPCODE_ERROR_TYPE }, { "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF }, { "FORMULA" , SC_OPCODE_FORMULA }, { "ATAN2" , SC_OPCODE_ARC_TAN_2 }, { "COM.MICROSOFT.CEILING.MATH" , SC_OPCODE_CEIL_MATH }, { "CEILING" , SC_OPCODE_CEIL }, { "COM.MICROSOFT.CEILING" , SC_OPCODE_CEIL_MS }, { "COM.MICROSOFT.CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE }, { "COM.MICROSOFT.ISO.CEILING" , SC_OPCODE_CEIL_ISO }, { "FLOOR" , SC_OPCODE_FLOOR }, { "COM.MICROSOFT.FLOOR" , SC_OPCODE_FLOOR_MS }, { "COM.MICROSOFT.FLOOR.MATH" , SC_OPCODE_FLOOR_MATH }, { "COM.MICROSOFT.FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE }, { "ROUND" , SC_OPCODE_ROUND }, { "ROUNDUP" , SC_OPCODE_ROUND_UP }, { "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN }, { "TRUNC" , SC_OPCODE_TRUNC }, { "LOG" , SC_OPCODE_LOG }, { "POWER" , SC_OPCODE_POWER }, { "GCD" , SC_OPCODE_GCD }, { "LCM" , SC_OPCODE_LCM }, { "MOD" , SC_OPCODE_MOD }, { "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT }, { "SUMSQ" , SC_OPCODE_SUM_SQ }, { "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 }, { "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 }, { "SUMXMY2" , SC_OPCODE_SUM_XMY2 }, { "DATE" , SC_OPCODE_GET_DATE }, { "TIME" , SC_OPCODE_GET_TIME }, { "DAYS" , SC_OPCODE_GET_DIFF_DATE }, { "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 }, { "DATEDIF" , SC_OPCODE_GET_DATEDIF }, { "MIN" , SC_OPCODE_MIN }, { "MINA" , SC_OPCODE_MIN_A }, { "MAX" , SC_OPCODE_MAX }, { "MAXA" , SC_OPCODE_MAX_A }, { "SUM" , SC_OPCODE_SUM }, { "PRODUCT" , SC_OPCODE_PRODUCT }, { "AVERAGE" , SC_OPCODE_AVERAGE }, { "AVERAGEA" , SC_OPCODE_AVERAGE_A }, { "COUNT" , SC_OPCODE_COUNT }, { "COUNTA" , SC_OPCODE_COUNT_2 }, { "NPV" , SC_OPCODE_NPV }, { "IRR" , SC_OPCODE_IRR }, { "MIRR" , SC_OPCODE_MIRR }, { "ISPMT" , SC_OPCODE_ISPMT }, { "VAR" , SC_OPCODE_VAR }, { "VARA" , SC_OPCODE_VAR_A }, { "VARP" , SC_OPCODE_VAR_P }, { "VARPA" , SC_OPCODE_VAR_P_A }, { "COM.MICROSOFT.VAR.P" , SC_OPCODE_VAR_P_MS }, { "COM.MICROSOFT.VAR.S" , SC_OPCODE_VAR_S }, { "STDEV" , SC_OPCODE_ST_DEV }, { "STDEVA" , SC_OPCODE_ST_DEV_A }, { "STDEVP" , SC_OPCODE_ST_DEV_P }, { "STDEVPA" , SC_OPCODE_ST_DEV_P_A }, { "COM.MICROSOFT.STDEV.P" , SC_OPCODE_ST_DEV_P_MS }, { "COM.MICROSOFT.STDEV.S" , SC_OPCODE_ST_DEV_S }, { "BINOM.DIST.RANGE" , SC_OPCODE_B }, { "NORMDIST" , SC_OPCODE_NORM_DIST }, { "COM.MICROSOFT.NORM.DIST" , SC_OPCODE_NORM_DIST_MS }, { "EXPONDIST" , SC_OPCODE_EXP_DIST }, { "COM.MICROSOFT.EXPON.DIST" , SC_OPCODE_EXP_DIST_MS }, { "BINOMDIST" , SC_OPCODE_BINOM_DIST }, { "COM.MICROSOFT.BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS }, { "POISSON" , SC_OPCODE_POISSON_DIST }, { "COM.MICROSOFT.POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS }, { "COMBIN" , SC_OPCODE_COMBIN }, { "COMBINA" , SC_OPCODE_COMBIN_A }, { "PERMUT" , SC_OPCODE_PERMUT }, { "PERMUTATIONA" , SC_OPCODE_PERMUTATION_A }, { "PV" , SC_OPCODE_PV }, { "SYD" , SC_OPCODE_SYD }, { "DDB" , SC_OPCODE_DDB }, { "DB" , SC_OPCODE_DB }, { "VDB" , SC_OPCODE_VBD }, { "PDURATION" , SC_OPCODE_PDURATION }, { "SLN" , SC_OPCODE_SLN }, { "PMT" , SC_OPCODE_PMT }, { "COLUMNS" , SC_OPCODE_COLUMNS }, { "ROWS" , SC_OPCODE_ROWS }, { "SHEETS" , SC_OPCODE_SHEETS }, { "COLUMN" , SC_OPCODE_COLUMN }, { "ROW" , SC_OPCODE_ROW }, { "SHEET" , SC_OPCODE_SHEET }, { "RRI" , SC_OPCODE_RRI }, { "FV" , SC_OPCODE_FV }, { "NPER" , SC_OPCODE_NPER }, { "RATE" , SC_OPCODE_RATE }, { "IPMT" , SC_OPCODE_IPMT }, { "PPMT" , SC_OPCODE_PPMT }, { "CUMIPMT" , SC_OPCODE_CUM_IPMT }, { "CUMPRINC" , SC_OPCODE_CUM_PRINC }, { "EFFECT" , SC_OPCODE_EFFECT }, { "NOMINAL" , SC_OPCODE_NOMINAL }, { "SUBTOTAL" , SC_OPCODE_SUB_TOTAL }, { "DSUM" , SC_OPCODE_DB_SUM }, { "DCOUNT" , SC_OPCODE_DB_COUNT }, { "DCOUNTA" , SC_OPCODE_DB_COUNT_2 }, { "DAVERAGE" , SC_OPCODE_DB_AVERAGE }, { "DGET" , SC_OPCODE_DB_GET }, { "DMAX" , SC_OPCODE_DB_MAX }, { "DMIN" , SC_OPCODE_DB_MIN }, { "DPRODUCT" , SC_OPCODE_DB_PRODUCT }, { "DSTDEV" , SC_OPCODE_DB_STD_DEV }, { "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P }, { "DVAR" , SC_OPCODE_DB_VAR }, { "DVARP" , SC_OPCODE_DB_VAR_P }, { "INDIRECT" , SC_OPCODE_INDIRECT }, { "ADDRESS" , SC_OPCODE_ADDRESS }, { "MATCH" , SC_OPCODE_MATCH }, { "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS }, { "COUNTIF" , SC_OPCODE_COUNT_IF }, { "SUMIF" , SC_OPCODE_SUM_IF }, { "AVERAGEIF" , SC_OPCODE_AVERAGE_IF }, { "SUMIFS" , SC_OPCODE_SUM_IFS }, { "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS }, { "COUNTIFS" , SC_OPCODE_COUNT_IFS }, { "LOOKUP" , SC_OPCODE_LOOKUP }, { "VLOOKUP" , SC_OPCODE_V_LOOKUP }, { "HLOOKUP" , SC_OPCODE_H_LOOKUP }, { "ORG.OPENOFFICE.MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for range list (union) { "OFFSET" , SC_OPCODE_OFFSET }, { "INDEX" , SC_OPCODE_INDEX }, { "AREAS" , SC_OPCODE_AREAS }, { "DOLLAR" , SC_OPCODE_CURRENCY }, { "REPLACE" , SC_OPCODE_REPLACE }, { "FIXED" , SC_OPCODE_FIXED }, { "FIND" , SC_OPCODE_FIND }, { "EXACT" , SC_OPCODE_EXACT }, { "LEFT" , SC_OPCODE_LEFT }, { "RIGHT" , SC_OPCODE_RIGHT }, { "SEARCH" , SC_OPCODE_SEARCH }, { "MID" , SC_OPCODE_MID }, { "LENB" , SC_OPCODE_LENB }, { "RIGHTB" , SC_OPCODE_RIGHTB }, { "LEFTB" , SC_OPCODE_LEFTB }, { "REPLACEB" , SC_OPCODE_REPLACEB }, { "FINDB" , SC_OPCODE_FINDB }, { "SEARCHB" , SC_OPCODE_SEARCHB }, { "MIDB" , SC_OPCODE_MIDB }, { "TEXT" , SC_OPCODE_TEXT }, { "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE }, { "REPT" , SC_OPCODE_REPT }, { "CONCATENATE" , SC_OPCODE_CONCAT }, { "COM.MICROSOFT.CONCAT" , SC_OPCODE_CONCAT_MS }, { "COM.MICROSOFT.TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS }, { "COM.MICROSOFT.IFS" , SC_OPCODE_IFS_MS }, { "COM.MICROSOFT.SWITCH" , SC_OPCODE_SWITCH_MS }, { "COM.MICROSOFT.MINIFS" , SC_OPCODE_MINIFS_MS }, { "COM.MICROSOFT.MAXIFS" , SC_OPCODE_MAXIFS_MS }, { "MVALUE" , SC_OPCODE_MAT_VALUE }, { "MDETERM" , SC_OPCODE_MAT_DET }, { "MINVERSE" , SC_OPCODE_MAT_INV }, { "MMULT" , SC_OPCODE_MAT_MULT }, { "TRANSPOSE" , SC_OPCODE_MAT_TRANS }, { "MUNIT" , SC_OPCODE_MATRIX_UNIT }, { "ORG.OPENOFFICE.GOALSEEK" , SC_OPCODE_BACK_SOLVER }, { "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST }, { "COM.MICROSOFT.HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS }, { "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST }, { "COM.MICROSOFT.LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS }, { "LEGACY.TDIST" , SC_OPCODE_T_DIST }, { "COM.MICROSOFT.T.DIST.2T" , SC_OPCODE_T_DIST_2T }, { "COM.MICROSOFT.T.DIST" , SC_OPCODE_T_DIST_MS }, { "COM.MICROSOFT.T.DIST.RT" , SC_OPCODE_T_DIST_RT }, { "LEGACY.FDIST" , SC_OPCODE_F_DIST }, { "FDIST" , SC_OPCODE_F_DIST_LT }, { "COM.MICROSOFT.F.DIST.RT" , SC_OPCODE_F_DIST_RT }, { "LEGACY.CHIDIST" , SC_OPCODE_CHI_DIST }, { "COM.MICROSOFT.CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS }, { "WEIBULL" , SC_OPCODE_WEIBULL }, { "COM.MICROSOFT.WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS }, { "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT }, { "COM.MICROSOFT.NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS }, { "CRITBINOM" , SC_OPCODE_CRIT_BINOM }, { "COM.MICROSOFT.BINOM.INV" , SC_OPCODE_BINOM_INV }, { "KURT" , SC_OPCODE_KURT }, { "HARMEAN" , SC_OPCODE_HAR_MEAN }, { "GEOMEAN" , SC_OPCODE_GEO_MEAN }, { "STANDARDIZE" , SC_OPCODE_STANDARD }, { "AVEDEV" , SC_OPCODE_AVE_DEV }, { "SKEW" , SC_OPCODE_SKEW }, { "SKEWP" , SC_OPCODE_SKEWP }, { "DEVSQ" , SC_OPCODE_DEV_SQ }, { "MEDIAN" , SC_OPCODE_MEDIAN }, { "MODE" , SC_OPCODE_MODAL_VALUE }, { "COM.MICROSOFT.MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS }, { "COM.MICROSOFT.MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI }, { "ZTEST" , SC_OPCODE_Z_TEST }, { "COM.MICROSOFT.Z.TEST" , SC_OPCODE_Z_TEST_MS }, { "COM.MICROSOFT.AGGREGATE" , SC_OPCODE_AGGREGATE }, { "TTEST" , SC_OPCODE_T_TEST }, { "COM.MICROSOFT.T.TEST" , SC_OPCODE_T_TEST_MS }, { "RANK" , SC_OPCODE_RANK }, { "PERCENTILE" , SC_OPCODE_PERCENTILE }, { "PERCENTRANK" , SC_OPCODE_PERCENT_RANK }, { "COM.MICROSOFT.PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC }, { "COM.MICROSOFT.PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC }, { "COM.MICROSOFT.QUARTILE.INC" , SC_OPCODE_QUARTILE_INC }, { "COM.MICROSOFT.RANK.EQ" , SC_OPCODE_RANK_EQ }, { "COM.MICROSOFT.PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC }, { "COM.MICROSOFT.PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC }, { "COM.MICROSOFT.QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC }, { "COM.MICROSOFT.RANK.AVG" , SC_OPCODE_RANK_AVG }, { "LARGE" , SC_OPCODE_LARGE }, { "SMALL" , SC_OPCODE_SMALL }, { "FREQUENCY" , SC_OPCODE_FREQUENCY }, { "QUARTILE" , SC_OPCODE_QUARTILE }, { "NORMINV" , SC_OPCODE_NORM_INV }, { "COM.MICROSOFT.NORM.INV" , SC_OPCODE_NORM_INV_MS }, { "CONFIDENCE" , SC_OPCODE_CONFIDENCE }, { "COM.MICROSOFT.CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N }, { "COM.MICROSOFT.CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T }, { "FTEST" , SC_OPCODE_F_TEST }, { "COM.MICROSOFT.F.TEST" , SC_OPCODE_F_TEST_MS }, { "TRIMMEAN" , SC_OPCODE_TRIM_MEAN }, { "PROB" , SC_OPCODE_PROB }, { "CORREL" , SC_OPCODE_CORREL }, { "COVAR" , SC_OPCODE_COVAR }, { "COM.MICROSOFT.COVARIANCE.P" , SC_OPCODE_COVARIANCE_P }, { "COM.MICROSOFT.COVARIANCE.S" , SC_OPCODE_COVARIANCE_S }, { "PEARSON" , SC_OPCODE_PEARSON }, { "RSQ" , SC_OPCODE_RSQ }, { "STEYX" , SC_OPCODE_STEYX }, { "SLOPE" , SC_OPCODE_SLOPE }, { "INTERCEPT" , SC_OPCODE_INTERCEPT }, { "TREND" , SC_OPCODE_TREND }, { "GROWTH" , SC_OPCODE_GROWTH }, { "LINEST" , SC_OPCODE_LINEST }, { "LOGEST" , SC_OPCODE_LOGEST }, { "FORECAST" , SC_OPCODE_FORECAST }, { "COM.MICROSOFT.FORECAST.ETS" , SC_OPCODE_FORECAST_ETS_ADD }, { "COM.MICROSOFT.FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA }, { "ORG.LIBREOFFICE.FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL }, { "COM.MICROSOFT.FORECAST.ETS.CONFINT" , SC_OPCODE_FORECAST_ETS_PIA }, { "ORG.LIBREOFFICE.FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM }, { "COM.MICROSOFT.FORECAST.ETS.STAT" , SC_OPCODE_FORECAST_ETS_STA }, { "ORG.LIBREOFFICE.FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM }, { "COM.MICROSOFT.FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN }, { "LEGACY.CHIINV" , SC_OPCODE_CHI_INV }, { "COM.MICROSOFT.CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS }, { "GAMMADIST" , SC_OPCODE_GAMMA_DIST }, { "COM.MICROSOFT.GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS }, { "GAMMAINV" , SC_OPCODE_GAMMA_INV }, { "COM.MICROSOFT.GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS }, { "TINV" , SC_OPCODE_T_INV }, { "COM.MICROSOFT.T.INV.2T" , SC_OPCODE_T_INV_2T }, { "COM.MICROSOFT.T.INV" , SC_OPCODE_T_INV_MS }, { "LEGACY.FINV" , SC_OPCODE_F_INV }, { "FINV" , SC_OPCODE_F_INV_LT }, { "COM.MICROSOFT.F.INV.RT" , SC_OPCODE_F_INV_RT }, { "LEGACY.CHITEST" , SC_OPCODE_CHI_TEST }, { "COM.MICROSOFT.CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS }, { "LOGINV" , SC_OPCODE_LOG_INV }, { "COM.MICROSOFT.LOGNORM.INV" , SC_OPCODE_LOG_INV_MS }, { "MULTIPLE.OPERATIONS" , SC_OPCODE_TABLE_OP }, { "BETADIST" , SC_OPCODE_BETA_DIST }, { "BETAINV" , SC_OPCODE_BETA_INV }, { "COM.MICROSOFT.BETA.DIST" , SC_OPCODE_BETA_DIST_MS }, { "COM.MICROSOFT.BETA.INV" , SC_OPCODE_BETA_INV_MS }, { "WEEKNUM" , SC_OPCODE_WEEK }, { "ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM }, { "ORG.LIBREOFFICE.WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO }, { "ORG.OPENOFFICE.EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY }, { "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK }, { "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS }, { "COM.MICROSOFT.NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS }, { "COM.MICROSOFT.WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS }, { "#NAME!" , SC_OPCODE_NO_NAME }, { "ORG.OPENOFFICE.STYLE" , SC_OPCODE_STYLE }, { "DDE" , SC_OPCODE_DDE }, { "BASE" , SC_OPCODE_BASE }, { "DECIMAL" , SC_OPCODE_DECIMAL }, { "ORG.OPENOFFICE.CONVERT" , SC_OPCODE_CONVERT_OOO }, { "ROMAN" , SC_OPCODE_ROMAN }, { "ARABIC" , SC_OPCODE_ARABIC }, { "HYPERLINK" , SC_OPCODE_HYPERLINK }, { "INFO" , SC_OPCODE_INFO }, { "COM.MICROSOFT.BAHTTEXT" , SC_OPCODE_BAHTTEXT }, { "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA }, { "EUROCONVERT" , SC_OPCODE_EUROCONVERT }, { "NUMBERVALUE" , SC_OPCODE_NUMBERVALUE }, { "GAMMA" , SC_OPCODE_GAMMA }, { "CHISQDIST" , SC_OPCODE_CHISQ_DIST }, { "COM.MICROSOFT.CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS }, { "CHISQINV" , SC_OPCODE_CHISQ_INV }, { "COM.MICROSOFT.CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS }, { "BITAND" , SC_OPCODE_BITAND }, { "BITOR" , SC_OPCODE_BITOR }, { "BITXOR" , SC_OPCODE_BITXOR }, { "BITRSHIFT" , SC_OPCODE_BITRSHIFT }, { "BITLSHIFT" , SC_OPCODE_BITLSHIFT }, /* BEGIN defined ERROR.TYPE() values. */ { "#NULL!" , SC_OPCODE_ERROR_NULL }, { "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO }, { "#VALUE!" , SC_OPCODE_ERROR_VALUE }, { "#REF!" , SC_OPCODE_ERROR_REF }, { "#NAME?" , SC_OPCODE_ERROR_NAME }, { "#NUM!" , SC_OPCODE_ERROR_NUM }, { "#N/A" , SC_OPCODE_ERROR_NA }, /* END defined ERROR.TYPE() values. */ { "COM.MICROSOFT.FILTERXML" , SC_OPCODE_FILTERXML }, { "COM.MICROSOFT.WEBSERVICE" , SC_OPCODE_WEBSERVICE }, { "ORG.LIBREOFFICE.COLOR" , SC_OPCODE_COLOR }, { "COM.MICROSOFT.ERF.PRECISE" , SC_OPCODE_ERF_MS }, { "COM.MICROSOFT.ERFC.PRECISE" , SC_OPCODE_ERFC_MS }, { "COM.MICROSOFT.ENCODEURL" , SC_OPCODE_ENCODEURL }, { "ORG.LIBREOFFICE.RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT }, { "ORG.LIBREOFFICE.ROUNDSIG" , SC_OPCODE_ROUNDSIG }, { "ORG.LIBREOFFICE.REGEX" , SC_OPCODE_REGEX }, { "ORG.LIBREOFFICE.FOURIER", SC_OPCODE_FOURIER }, { "ORG.LIBREOFFICE.RAND.NV" , SC_OPCODE_RANDOM_NV }, { "ORG.LIBREOFFICE.RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV }, { nullptr, -1 } }; /** These function names are used in the OOXML XLSX import/export. */ const std::pair RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML[] = { { "IF" , SC_OPCODE_IF }, { "IFERROR" , SC_OPCODE_IF_ERROR }, { "_xlfn.IFNA" , SC_OPCODE_IF_NA }, { "CHOOSE" , SC_OPCODE_CHOOSE }, { "(" , SC_OPCODE_OPEN }, { ")" , SC_OPCODE_CLOSE }, { "[" , SC_OPCODE_TABLE_REF_OPEN }, { "]" , SC_OPCODE_TABLE_REF_CLOSE }, { "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL }, { "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS }, { "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA }, { "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS }, { "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW }, { "{" , SC_OPCODE_ARRAY_OPEN }, { "}" , SC_OPCODE_ARRAY_CLOSE }, { ";" , SC_OPCODE_ARRAY_ROW_SEP }, { "," , SC_OPCODE_ARRAY_COL_SEP }, { "," , SC_OPCODE_SEP }, { "%" , SC_OPCODE_PERCENT_SIGN }, { "+" , SC_OPCODE_ADD }, { "-" , SC_OPCODE_SUB }, { "*" , SC_OPCODE_MUL }, { "/" , SC_OPCODE_DIV }, { "&" , SC_OPCODE_AMPERSAND }, { "^" , SC_OPCODE_POW }, { "=" , SC_OPCODE_EQUAL }, { "<>" , SC_OPCODE_NOT_EQUAL }, { "<" , SC_OPCODE_LESS }, { ">" , SC_OPCODE_GREATER }, { "<=" , SC_OPCODE_LESS_EQUAL }, { ">=" , SC_OPCODE_GREATER_EQUAL }, { "AND" , SC_OPCODE_AND }, { "OR" , SC_OPCODE_OR }, { "_xlfn.XOR" , SC_OPCODE_XOR }, { " " , SC_OPCODE_INTERSECT }, { "~" , SC_OPCODE_UNION }, { ":" , SC_OPCODE_RANGE }, { "NOT" , SC_OPCODE_NOT }, { "NEG" , SC_OPCODE_NEG }, { "-" , SC_OPCODE_NEG_SUB }, { "PI" , SC_OPCODE_PI }, { "RAND" , SC_OPCODE_RANDOM }, { "TRUE" , SC_OPCODE_TRUE }, { "FALSE" , SC_OPCODE_FALSE }, { "TODAY" , SC_OPCODE_GET_ACT_DATE }, { "NOW" , SC_OPCODE_GET_ACT_TIME }, { "NA" , SC_OPCODE_NO_VALUE }, { "_xlfn.ORG.OPENOFFICE.CURRENT" , SC_OPCODE_CURRENT }, { "DEGREES" , SC_OPCODE_DEG }, { "RADIANS" , SC_OPCODE_RAD }, { "SIN" , SC_OPCODE_SIN }, { "COS" , SC_OPCODE_COS }, { "TAN" , SC_OPCODE_TAN }, { "_xlfn.COT" , SC_OPCODE_COT }, { "ASIN" , SC_OPCODE_ARC_SIN }, { "ACOS" , SC_OPCODE_ARC_COS }, { "ATAN" , SC_OPCODE_ARC_TAN }, { "_xlfn.ACOT" , SC_OPCODE_ARC_COT }, { "SINH" , SC_OPCODE_SIN_HYP }, { "COSH" , SC_OPCODE_COS_HYP }, { "TANH" , SC_OPCODE_TAN_HYP }, { "_xlfn.COTH" , SC_OPCODE_COT_HYP }, { "ASINH" , SC_OPCODE_ARC_SIN_HYP }, { "ACOSH" , SC_OPCODE_ARC_COS_HYP }, { "ATANH" , SC_OPCODE_ARC_TAN_HYP }, { "_xlfn.ACOTH" , SC_OPCODE_ARC_COT_HYP }, { "_xlfn.CSC" , SC_OPCODE_COSECANT }, { "_xlfn.SEC" , SC_OPCODE_SECANT }, { "_xlfn.CSCH" , SC_OPCODE_COSECANT_HYP }, { "_xlfn.SECH" , SC_OPCODE_SECANT_HYP }, { "EXP" , SC_OPCODE_EXP }, { "LN" , SC_OPCODE_LN }, { "SQRT" , SC_OPCODE_SQRT }, { "FACT" , SC_OPCODE_FACT }, { "YEAR" , SC_OPCODE_GET_YEAR }, { "MONTH" , SC_OPCODE_GET_MONTH }, { "DAY" , SC_OPCODE_GET_DAY }, { "HOUR" , SC_OPCODE_GET_HOUR }, { "MINUTE" , SC_OPCODE_GET_MIN }, { "SECOND" , SC_OPCODE_GET_SEC }, { "SIGN" , SC_OPCODE_PLUS_MINUS }, { "ABS" , SC_OPCODE_ABS }, { "INT" , SC_OPCODE_INT }, { "_xlfn.PHI" , SC_OPCODE_PHI }, { "_xlfn.GAUSS" , SC_OPCODE_GAUSS }, { "ISBLANK" , SC_OPCODE_IS_EMPTY }, { "ISTEXT" , SC_OPCODE_IS_STRING }, { "ISNONTEXT" , SC_OPCODE_IS_NON_STRING }, { "ISLOGICAL" , SC_OPCODE_IS_LOGICAL }, { "TYPE" , SC_OPCODE_TYPE }, { "CELL" , SC_OPCODE_CELL }, { "ISREF" , SC_OPCODE_IS_REF }, { "ISNUMBER" , SC_OPCODE_IS_VALUE }, { "_xlfn.ISFORMULA" , SC_OPCODE_IS_FORMULA }, { "ISNA" , SC_OPCODE_IS_NV }, { "ISERR" , SC_OPCODE_IS_ERR }, { "ISERROR" , SC_OPCODE_IS_ERROR }, { "ISEVEN" , SC_OPCODE_IS_EVEN }, { "ISODD" , SC_OPCODE_IS_ODD }, { "N" , SC_OPCODE_N }, { "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE }, { "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE }, { "CODE" , SC_OPCODE_CODE }, { "TRIM" , SC_OPCODE_TRIM }, { "UPPER" , SC_OPCODE_UPPER }, { "PROPER" , SC_OPCODE_PROPER }, { "LOWER" , SC_OPCODE_LOWER }, { "LEN" , SC_OPCODE_LEN }, { "T" , SC_OPCODE_T }, { "VALUE" , SC_OPCODE_VALUE }, { "CLEAN" , SC_OPCODE_CLEAN }, { "CHAR" , SC_OPCODE_CHAR }, { "JIS" , SC_OPCODE_JIS }, { "ASC" , SC_OPCODE_ASC }, { "_xlfn.UNICODE" , SC_OPCODE_UNICODE }, { "_xlfn.UNICHAR" , SC_OPCODE_UNICHAR }, { "LOG10" , SC_OPCODE_LOG10 }, { "EVEN" , SC_OPCODE_EVEN }, { "ODD" , SC_OPCODE_ODD }, { "NORMSDIST" , SC_OPCODE_STD_NORM_DIST }, { "_xlfn.NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS }, { "FISHER" , SC_OPCODE_FISHER }, { "FISHERINV" , SC_OPCODE_FISHER_INV }, { "NORMSINV" , SC_OPCODE_S_NORM_INV }, { "_xlfn.NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS }, { "GAMMALN" , SC_OPCODE_GAMMA_LN }, { "_xlfn.GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS }, { "_xlfn.ORG.OPENOFFICE.ERRORTYPE" , SC_OPCODE_ERROR_TYPE }, { "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF }, { "_xlfn.FORMULATEXT" , SC_OPCODE_FORMULA }, { "ATAN2" , SC_OPCODE_ARC_TAN_2 }, { "_xlfn.CEILING.MATH" , SC_OPCODE_CEIL_MATH }, { "_xlfn.CEILING.MATH" , SC_OPCODE_CEIL }, { "CEILING" , SC_OPCODE_CEIL_MS }, { "_xlfn.CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE }, { "ISO.CEILING" , SC_OPCODE_CEIL_ISO }, { "FLOOR" , SC_OPCODE_FLOOR_MS }, { "_xlfn.FLOOR.MATH" , SC_OPCODE_FLOOR_MATH }, { "_xlfn.FLOOR.MATH" , SC_OPCODE_FLOOR }, { "_xlfn.FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE }, { "ROUND" , SC_OPCODE_ROUND }, { "ROUNDUP" , SC_OPCODE_ROUND_UP }, { "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN }, { "TRUNC" , SC_OPCODE_TRUNC }, { "LOG" , SC_OPCODE_LOG }, { "POWER" , SC_OPCODE_POWER }, { "GCD" , SC_OPCODE_GCD }, { "LCM" , SC_OPCODE_LCM }, { "MOD" , SC_OPCODE_MOD }, { "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT }, { "SUMSQ" , SC_OPCODE_SUM_SQ }, { "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 }, { "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 }, { "SUMXMY2" , SC_OPCODE_SUM_XMY2 }, { "DATE" , SC_OPCODE_GET_DATE }, { "TIME" , SC_OPCODE_GET_TIME }, { "_xlfn.DAYS" , SC_OPCODE_GET_DIFF_DATE }, { "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 }, { "DATEDIF" , SC_OPCODE_GET_DATEDIF }, { "MIN" , SC_OPCODE_MIN }, { "MINA" , SC_OPCODE_MIN_A }, { "MAX" , SC_OPCODE_MAX }, { "MAXA" , SC_OPCODE_MAX_A }, { "SUM" , SC_OPCODE_SUM }, { "PRODUCT" , SC_OPCODE_PRODUCT }, { "AVERAGE" , SC_OPCODE_AVERAGE }, { "AVERAGEA" , SC_OPCODE_AVERAGE_A }, { "COUNT" , SC_OPCODE_COUNT }, { "COUNTA" , SC_OPCODE_COUNT_2 }, { "NPV" , SC_OPCODE_NPV }, { "IRR" , SC_OPCODE_IRR }, { "MIRR" , SC_OPCODE_MIRR }, { "ISPMT" , SC_OPCODE_ISPMT }, { "VAR" , SC_OPCODE_VAR }, { "VARA" , SC_OPCODE_VAR_A }, { "VARP" , SC_OPCODE_VAR_P }, { "VARPA" , SC_OPCODE_VAR_P_A }, { "_xlfn.VAR.P" , SC_OPCODE_VAR_P_MS }, { "_xlfn.VAR.S" , SC_OPCODE_VAR_S }, { "STDEV" , SC_OPCODE_ST_DEV }, { "STDEVA" , SC_OPCODE_ST_DEV_A }, { "STDEVP" , SC_OPCODE_ST_DEV_P }, { "STDEVPA" , SC_OPCODE_ST_DEV_P_A }, { "_xlfn.STDEV.P" , SC_OPCODE_ST_DEV_P_MS }, { "_xlfn.STDEV.S" , SC_OPCODE_ST_DEV_S }, { "B" , SC_OPCODE_B }, { "NORMDIST" , SC_OPCODE_NORM_DIST }, { "_xlfn.NORM.DIST" , SC_OPCODE_NORM_DIST_MS }, { "EXPONDIST" , SC_OPCODE_EXP_DIST }, { "_xlfn.EXPON.DIST" , SC_OPCODE_EXP_DIST_MS }, { "BINOMDIST" , SC_OPCODE_BINOM_DIST }, { "_xlfn.BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS }, { "POISSON" , SC_OPCODE_POISSON_DIST }, { "_xlfn.POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS }, { "COMBIN" , SC_OPCODE_COMBIN }, { "_xlfn.COMBINA" , SC_OPCODE_COMBIN_A }, { "PERMUT" , SC_OPCODE_PERMUT }, { "_xlfn.PERMUTATIONA" , SC_OPCODE_PERMUTATION_A }, { "PV" , SC_OPCODE_PV }, { "SYD" , SC_OPCODE_SYD }, { "DDB" , SC_OPCODE_DDB }, { "DB" , SC_OPCODE_DB }, { "VDB" , SC_OPCODE_VBD }, { "_xlfn.PDURATION" , SC_OPCODE_PDURATION }, { "SLN" , SC_OPCODE_SLN }, { "PMT" , SC_OPCODE_PMT }, { "COLUMNS" , SC_OPCODE_COLUMNS }, { "ROWS" , SC_OPCODE_ROWS }, { "_xlfn.SHEETS" , SC_OPCODE_SHEETS }, { "COLUMN" , SC_OPCODE_COLUMN }, { "ROW" , SC_OPCODE_ROW }, { "_xlfn.SHEET" , SC_OPCODE_SHEET }, { "_xlfn.RRI" , SC_OPCODE_RRI }, { "FV" , SC_OPCODE_FV }, { "NPER" , SC_OPCODE_NPER }, { "RATE" , SC_OPCODE_RATE }, { "IPMT" , SC_OPCODE_IPMT }, { "PPMT" , SC_OPCODE_PPMT }, { "CUMIPMT" , SC_OPCODE_CUM_IPMT }, { "CUMPRINC" , SC_OPCODE_CUM_PRINC }, { "EFFECT" , SC_OPCODE_EFFECT }, { "NOMINAL" , SC_OPCODE_NOMINAL }, { "SUBTOTAL" , SC_OPCODE_SUB_TOTAL }, { "DSUM" , SC_OPCODE_DB_SUM }, { "DCOUNT" , SC_OPCODE_DB_COUNT }, { "DCOUNTA" , SC_OPCODE_DB_COUNT_2 }, { "DAVERAGE" , SC_OPCODE_DB_AVERAGE }, { "DGET" , SC_OPCODE_DB_GET }, { "DMAX" , SC_OPCODE_DB_MAX }, { "DMIN" , SC_OPCODE_DB_MIN }, { "DPRODUCT" , SC_OPCODE_DB_PRODUCT }, { "DSTDEV" , SC_OPCODE_DB_STD_DEV }, { "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P }, { "DVAR" , SC_OPCODE_DB_VAR }, { "DVARP" , SC_OPCODE_DB_VAR_P }, { "INDIRECT" , SC_OPCODE_INDIRECT }, { "ADDRESS" , SC_OPCODE_ADDRESS }, { "MATCH" , SC_OPCODE_MATCH }, { "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS }, { "COUNTIF" , SC_OPCODE_COUNT_IF }, { "SUMIF" , SC_OPCODE_SUM_IF }, { "AVERAGEIF" , SC_OPCODE_AVERAGE_IF }, { "SUMIFS" , SC_OPCODE_SUM_IFS }, { "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS }, { "COUNTIFS" , SC_OPCODE_COUNT_IFS }, { "LOOKUP" , SC_OPCODE_LOOKUP }, { "VLOOKUP" , SC_OPCODE_V_LOOKUP }, { "HLOOKUP" , SC_OPCODE_H_LOOKUP }, { "_xlfn.ORG.OPENOFFICE.MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for range list (union) { "OFFSET" , SC_OPCODE_OFFSET }, { "INDEX" , SC_OPCODE_INDEX }, { "AREAS" , SC_OPCODE_AREAS }, { "DOLLAR" , SC_OPCODE_CURRENCY }, { "REPLACE" , SC_OPCODE_REPLACE }, { "FIXED" , SC_OPCODE_FIXED }, { "FIND" , SC_OPCODE_FIND }, { "EXACT" , SC_OPCODE_EXACT }, { "LEFT" , SC_OPCODE_LEFT }, { "RIGHT" , SC_OPCODE_RIGHT }, { "SEARCH" , SC_OPCODE_SEARCH }, { "MID" , SC_OPCODE_MID }, { "LENB" , SC_OPCODE_LENB }, { "RIGHTB" , SC_OPCODE_RIGHTB }, { "LEFTB" , SC_OPCODE_LEFTB }, { "REPLACEB" , SC_OPCODE_REPLACEB }, { "FINDB" , SC_OPCODE_FINDB }, { "SEARCHB" , SC_OPCODE_SEARCHB }, { "MIDB" , SC_OPCODE_MIDB }, { "TEXT" , SC_OPCODE_TEXT }, { "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE }, { "REPT" , SC_OPCODE_REPT }, { "CONCATENATE" , SC_OPCODE_CONCAT }, { "_xlfn.CONCAT" , SC_OPCODE_CONCAT_MS }, { "_xlfn.TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS }, { "_xlfn.IFS" , SC_OPCODE_IFS_MS }, { "_xlfn.SWITCH" , SC_OPCODE_SWITCH_MS }, { "_xlfn.MINIFS" , SC_OPCODE_MINIFS_MS }, { "_xlfn.MAXIFS" , SC_OPCODE_MAXIFS_MS }, { "MVALUE" , SC_OPCODE_MAT_VALUE }, { "MDETERM" , SC_OPCODE_MAT_DET }, { "MINVERSE" , SC_OPCODE_MAT_INV }, { "MMULT" , SC_OPCODE_MAT_MULT }, { "TRANSPOSE" , SC_OPCODE_MAT_TRANS }, { "_xlfn.MUNIT" , SC_OPCODE_MATRIX_UNIT }, { "_xlfn.ORG.OPENOFFICE.GOALSEEK" , SC_OPCODE_BACK_SOLVER }, { "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST }, { "_xlfn.HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS }, { "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST }, { "_xlfn.LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS }, { "TDIST" , SC_OPCODE_T_DIST }, { "_xlfn.T.DIST.2T" , SC_OPCODE_T_DIST_2T }, { "_xlfn.T.DIST" , SC_OPCODE_T_DIST_MS }, { "_xlfn.T.DIST.RT" , SC_OPCODE_T_DIST_RT }, { "FDIST" , SC_OPCODE_F_DIST }, { "_xlfn.F.DIST" , SC_OPCODE_F_DIST_LT }, { "_xlfn.F.DIST.RT" , SC_OPCODE_F_DIST_RT }, { "CHIDIST" , SC_OPCODE_CHI_DIST }, { "_xlfn.CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS }, { "WEIBULL" , SC_OPCODE_WEIBULL }, { "_xlfn.WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS }, { "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT }, { "_xlfn.NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS }, { "CRITBINOM" , SC_OPCODE_CRIT_BINOM }, { "_xlfn.BINOM.INV" , SC_OPCODE_BINOM_INV }, { "KURT" , SC_OPCODE_KURT }, { "HARMEAN" , SC_OPCODE_HAR_MEAN }, { "GEOMEAN" , SC_OPCODE_GEO_MEAN }, { "STANDARDIZE" , SC_OPCODE_STANDARD }, { "AVEDEV" , SC_OPCODE_AVE_DEV }, { "SKEW" , SC_OPCODE_SKEW }, { "_xlfn.SKEW.P" , SC_OPCODE_SKEWP }, { "DEVSQ" , SC_OPCODE_DEV_SQ }, { "MEDIAN" , SC_OPCODE_MEDIAN }, { "MODE" , SC_OPCODE_MODAL_VALUE }, { "_xlfn.MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS }, { "_xlfn.MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI }, { "ZTEST" , SC_OPCODE_Z_TEST }, { "_xlfn.Z.TEST" , SC_OPCODE_Z_TEST_MS }, { "_xlfn.AGGREGATE" , SC_OPCODE_AGGREGATE }, { "TTEST" , SC_OPCODE_T_TEST }, { "_xlfn.T.TEST" , SC_OPCODE_T_TEST_MS }, { "RANK" , SC_OPCODE_RANK }, { "PERCENTILE" , SC_OPCODE_PERCENTILE }, { "PERCENTRANK" , SC_OPCODE_PERCENT_RANK }, { "_xlfn.PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC }, { "_xlfn.PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC }, { "_xlfn.QUARTILE.INC" , SC_OPCODE_QUARTILE_INC }, { "_xlfn.RANK.EQ" , SC_OPCODE_RANK_EQ }, { "_xlfn.PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC }, { "_xlfn.PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC }, { "_xlfn.QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC }, { "_xlfn.RANK.AVG" , SC_OPCODE_RANK_AVG }, { "LARGE" , SC_OPCODE_LARGE }, { "SMALL" , SC_OPCODE_SMALL }, { "FREQUENCY" , SC_OPCODE_FREQUENCY }, { "QUARTILE" , SC_OPCODE_QUARTILE }, { "NORMINV" , SC_OPCODE_NORM_INV }, { "_xlfn.NORM.INV" , SC_OPCODE_NORM_INV_MS }, { "CONFIDENCE" , SC_OPCODE_CONFIDENCE }, { "_xlfn.CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N }, { "_xlfn.CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T }, { "FTEST" , SC_OPCODE_F_TEST }, { "_xlfn.F.TEST" , SC_OPCODE_F_TEST_MS }, { "TRIMMEAN" , SC_OPCODE_TRIM_MEAN }, { "PROB" , SC_OPCODE_PROB }, { "CORREL" , SC_OPCODE_CORREL }, { "COVAR" , SC_OPCODE_COVAR }, { "_xlfn.COVARIANCE.P" , SC_OPCODE_COVARIANCE_P }, { "_xlfn.COVARIANCE.S" , SC_OPCODE_COVARIANCE_S }, { "PEARSON" , SC_OPCODE_PEARSON }, { "RSQ" , SC_OPCODE_RSQ }, { "STEYX" , SC_OPCODE_STEYX }, { "SLOPE" , SC_OPCODE_SLOPE }, { "INTERCEPT" , SC_OPCODE_INTERCEPT }, { "TREND" , SC_OPCODE_TREND }, { "GROWTH" , SC_OPCODE_GROWTH }, { "LINEST" , SC_OPCODE_LINEST }, { "LOGEST" , SC_OPCODE_LOGEST }, { "FORECAST" , SC_OPCODE_FORECAST }, { "_xlfn.FORECAST.ETS" , SC_OPCODE_FORECAST_ETS_ADD }, { "_xlfn.FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA }, { "_xlfn.ORG.LIBREOFFICE.FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL }, { "_xlfn.FORECAST.ETS.CONFINT" , SC_OPCODE_FORECAST_ETS_PIA }, { "_xlfn.ORG.LIBREOFFICE.FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM }, { "_xlfn.FORECAST.ETS.STAT" , SC_OPCODE_FORECAST_ETS_STA }, { "_xlfn.ORG.LIBREOFFICE.FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM }, { "_xlfn.FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN }, { "CHIINV" , SC_OPCODE_CHI_INV }, { "_xlfn.CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS }, { "GAMMADIST" , SC_OPCODE_GAMMA_DIST }, { "_xlfn.GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS }, { "GAMMAINV" , SC_OPCODE_GAMMA_INV }, { "_xlfn.GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS }, { "TINV" , SC_OPCODE_T_INV }, { "_xlfn.T.INV.2T" , SC_OPCODE_T_INV_2T }, { "_xlfn.T.INV" , SC_OPCODE_T_INV_MS }, { "FINV" , SC_OPCODE_F_INV }, { "_xlfn.F.INV" , SC_OPCODE_F_INV_LT }, { "_xlfn.F.INV.RT" , SC_OPCODE_F_INV_RT }, { "CHITEST" , SC_OPCODE_CHI_TEST }, { "_xlfn.CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS }, { "LOGINV" , SC_OPCODE_LOG_INV }, { "_xlfn.LOGNORM.INV" , SC_OPCODE_LOG_INV_MS }, { "TABLE" , SC_OPCODE_TABLE_OP }, { "BETADIST" , SC_OPCODE_BETA_DIST }, { "BETAINV" , SC_OPCODE_BETA_INV }, { "_xlfn.BETA.DIST" , SC_OPCODE_BETA_DIST_MS }, { "_xlfn.BETA.INV" , SC_OPCODE_BETA_INV_MS }, { "WEEKNUM" , SC_OPCODE_WEEK }, { "_xlfn.ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM }, { "_xlfn.ORG.LIBREOFFICE.WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO }, { "_xlfn.ORG.OPENOFFICE.EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY }, { "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK }, { "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS }, { "NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS }, { "WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS }, { "#NAME!" , SC_OPCODE_NO_NAME }, { "_xlfn.ORG.OPENOFFICE.STYLE" , SC_OPCODE_STYLE }, { "DDE" , SC_OPCODE_DDE }, { "_xlfn.BASE" , SC_OPCODE_BASE }, { "_xlfn.DECIMAL" , SC_OPCODE_DECIMAL }, { "_xlfn.ORG.OPENOFFICE.CONVERT" , SC_OPCODE_CONVERT_OOO }, { "ROMAN" , SC_OPCODE_ROMAN }, { "_xlfn.ARABIC" , SC_OPCODE_ARABIC }, { "HYPERLINK" , SC_OPCODE_HYPERLINK }, { "INFO" , SC_OPCODE_INFO }, { "_xlfn.BAHTTEXT" , SC_OPCODE_BAHTTEXT }, { "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA }, { "EUROCONVERT" , SC_OPCODE_EUROCONVERT }, { "_xlfn.NUMBERVALUE" , SC_OPCODE_NUMBERVALUE }, { "_xlfn.GAMMA" , SC_OPCODE_GAMMA }, { "CHISQDIST" , SC_OPCODE_CHISQ_DIST }, { "_xlfn.CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS }, { "CHISQINV" , SC_OPCODE_CHISQ_INV }, { "_xlfn.CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS }, { "_xlfn.BITAND" , SC_OPCODE_BITAND }, { "_xlfn.BITOR" , SC_OPCODE_BITOR }, { "_xlfn.BITXOR" , SC_OPCODE_BITXOR }, { "_xlfn.BITRSHIFT" , SC_OPCODE_BITRSHIFT }, { "_xlfn.BITLSHIFT" , SC_OPCODE_BITLSHIFT }, { "#NULL!" , SC_OPCODE_ERROR_NULL }, { "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO }, { "#VALUE!" , SC_OPCODE_ERROR_VALUE }, { "#REF!" , SC_OPCODE_ERROR_REF }, { "#NAME?" , SC_OPCODE_ERROR_NAME }, { "#NUM!" , SC_OPCODE_ERROR_NUM }, { "#N/A" , SC_OPCODE_ERROR_NA }, /* END defined ERROR.TYPE() values. */ { "_xlfn.FILTERXML" , SC_OPCODE_FILTERXML }, { "_xlfn.WEBSERVICE" , SC_OPCODE_WEBSERVICE }, { "_xlfn.ORG.LIBREOFFICE.COLOR" , SC_OPCODE_COLOR }, { "_xlfn.ERF.PRECISE" , SC_OPCODE_ERF_MS }, { "_xlfn.ERFC.PRECISE" , SC_OPCODE_ERFC_MS }, { "_xlfn.ENCODEURL" , SC_OPCODE_ENCODEURL }, { "_xlfn.ORG.LIBREOFFICE.RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT }, { "_xlfn.ORG.LIBREOFFICE.ROUNDSIG" , SC_OPCODE_ROUNDSIG }, { "_xlfn.ORG.LIBREOFFICE.REGEX" , SC_OPCODE_REGEX }, { "_xlfn.ORG.LIBREOFFICE.FOURIER", SC_OPCODE_FOURIER }, { "_xlfn.ORG.LIBREOFFICE.RAND.NV" , SC_OPCODE_RANDOM_NV }, { "_xlfn.ORG.LIBREOFFICE.RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV }, { nullptr, -1 } }; /** These English names are used to store/load ODF v1.0/v1.1. */ // DO NOT CHANGE NAMES! Only add functions. // If there is a reason for another name for some function then add an // *additional* name to be recognized to sc/source/core/tool/compiler.cxx // ScCompiler::IsOpCode() in the else if (mxSymbols->isPODF()) block. const std::pair RID_STRLIST_FUNCTION_NAMES_ENGLISH_PODF[] = { { "IF" , SC_OPCODE_IF }, { "IFERROR" , SC_OPCODE_IF_ERROR }, { "IFNA" , SC_OPCODE_IF_NA }, { "CHOOSE" , SC_OPCODE_CHOOSE }, { "(" , SC_OPCODE_OPEN }, { ")" , SC_OPCODE_CLOSE }, { "[" , SC_OPCODE_TABLE_REF_OPEN }, { "]" , SC_OPCODE_TABLE_REF_CLOSE }, { "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL }, { "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS }, { "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA }, { "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS }, { "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW }, { "{" , SC_OPCODE_ARRAY_OPEN }, { "}" , SC_OPCODE_ARRAY_CLOSE }, { "|" , SC_OPCODE_ARRAY_ROW_SEP }, { ";" , SC_OPCODE_ARRAY_COL_SEP }, { ";" , SC_OPCODE_SEP }, { "%" , SC_OPCODE_PERCENT_SIGN }, { "+" , SC_OPCODE_ADD }, { "-" , SC_OPCODE_SUB }, { "*" , SC_OPCODE_MUL }, { "/" , SC_OPCODE_DIV }, { "&" , SC_OPCODE_AMPERSAND }, { "^" , SC_OPCODE_POW }, { "=" , SC_OPCODE_EQUAL }, { "<>" , SC_OPCODE_NOT_EQUAL }, { "<" , SC_OPCODE_LESS }, { ">" , SC_OPCODE_GREATER }, { "<=" , SC_OPCODE_LESS_EQUAL }, { ">=" , SC_OPCODE_GREATER_EQUAL }, { "AND" , SC_OPCODE_AND }, { "OR" , SC_OPCODE_OR }, { "XOR" , SC_OPCODE_XOR }, { "!" , SC_OPCODE_INTERSECT }, { "~" , SC_OPCODE_UNION }, { ":" , SC_OPCODE_RANGE }, { "NOT" , SC_OPCODE_NOT }, { "NEG" , SC_OPCODE_NEG }, { "-" , SC_OPCODE_NEG_SUB }, { "PI" , SC_OPCODE_PI }, { "RAND" , SC_OPCODE_RANDOM }, { "TRUE" , SC_OPCODE_TRUE }, { "FALSE" , SC_OPCODE_FALSE }, { "TODAY" , SC_OPCODE_GET_ACT_DATE }, { "NOW" , SC_OPCODE_GET_ACT_TIME }, { "NA" , SC_OPCODE_NO_VALUE }, { "CURRENT" , SC_OPCODE_CURRENT }, { "DEGREES" , SC_OPCODE_DEG }, { "RADIANS" , SC_OPCODE_RAD }, { "SIN" , SC_OPCODE_SIN }, { "COS" , SC_OPCODE_COS }, { "TAN" , SC_OPCODE_TAN }, { "COT" , SC_OPCODE_COT }, { "ASIN" , SC_OPCODE_ARC_SIN }, { "ACOS" , SC_OPCODE_ARC_COS }, { "ATAN" , SC_OPCODE_ARC_TAN }, { "ACOT" , SC_OPCODE_ARC_COT }, { "SINH" , SC_OPCODE_SIN_HYP }, { "COSH" , SC_OPCODE_COS_HYP }, { "TANH" , SC_OPCODE_TAN_HYP }, { "COTH" , SC_OPCODE_COT_HYP }, { "ASINH" , SC_OPCODE_ARC_SIN_HYP }, { "ACOSH" , SC_OPCODE_ARC_COS_HYP }, { "ATANH" , SC_OPCODE_ARC_TAN_HYP }, { "ACOTH" , SC_OPCODE_ARC_COT_HYP }, { "CSC" , SC_OPCODE_COSECANT }, { "SEC" , SC_OPCODE_SECANT }, { "CSCH" , SC_OPCODE_COSECANT_HYP }, { "SECH" , SC_OPCODE_SECANT_HYP }, { "EXP" , SC_OPCODE_EXP }, { "LN" , SC_OPCODE_LN }, { "SQRT" , SC_OPCODE_SQRT }, { "FACT" , SC_OPCODE_FACT }, { "YEAR" , SC_OPCODE_GET_YEAR }, { "MONTH" , SC_OPCODE_GET_MONTH }, { "DAY" , SC_OPCODE_GET_DAY }, { "HOUR" , SC_OPCODE_GET_HOUR }, { "MINUTE" , SC_OPCODE_GET_MIN }, { "SECOND" , SC_OPCODE_GET_SEC }, { "SIGN" , SC_OPCODE_PLUS_MINUS }, { "ABS" , SC_OPCODE_ABS }, { "INT" , SC_OPCODE_INT }, { "PHI" , SC_OPCODE_PHI }, { "GAUSS" , SC_OPCODE_GAUSS }, { "ISBLANK" , SC_OPCODE_IS_EMPTY }, { "ISTEXT" , SC_OPCODE_IS_STRING }, { "ISNONTEXT" , SC_OPCODE_IS_NON_STRING }, { "ISLOGICAL" , SC_OPCODE_IS_LOGICAL }, { "TYPE" , SC_OPCODE_TYPE }, { "CELL" , SC_OPCODE_CELL }, { "ISREF" , SC_OPCODE_IS_REF }, { "ISNUMBER" , SC_OPCODE_IS_VALUE }, { "ISFORMULA" , SC_OPCODE_IS_FORMULA }, { "ISNA" , SC_OPCODE_IS_NV }, { "ISERR" , SC_OPCODE_IS_ERR }, { "ISERROR" , SC_OPCODE_IS_ERROR }, { "ISEVEN" , SC_OPCODE_IS_EVEN }, { "ISODD" , SC_OPCODE_IS_ODD }, { "N" , SC_OPCODE_N }, { "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE }, { "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE }, { "CODE" , SC_OPCODE_CODE }, { "TRIM" , SC_OPCODE_TRIM }, { "UPPER" , SC_OPCODE_UPPER }, { "PROPER" , SC_OPCODE_PROPER }, { "LOWER" , SC_OPCODE_LOWER }, { "LEN" , SC_OPCODE_LEN }, { "T" , SC_OPCODE_T }, { "VALUE" , SC_OPCODE_VALUE }, { "CLEAN" , SC_OPCODE_CLEAN }, { "CHAR" , SC_OPCODE_CHAR }, { "JIS" , SC_OPCODE_JIS }, { "ASC" , SC_OPCODE_ASC }, { "UNICODE" , SC_OPCODE_UNICODE }, { "UNICHAR" , SC_OPCODE_UNICHAR }, { "LOG10" , SC_OPCODE_LOG10 }, { "EVEN" , SC_OPCODE_EVEN }, { "ODD" , SC_OPCODE_ODD }, { "NORMSDIST" , SC_OPCODE_STD_NORM_DIST }, { "NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS }, { "FISHER" , SC_OPCODE_FISHER }, { "FISHERINV" , SC_OPCODE_FISHER_INV }, { "NORMSINV" , SC_OPCODE_S_NORM_INV }, { "NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS }, { "GAMMALN" , SC_OPCODE_GAMMA_LN }, { "GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS }, { "ERRORTYPE" , SC_OPCODE_ERROR_TYPE }, { "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF }, { "FORMULA" , SC_OPCODE_FORMULA }, { "ATAN2" , SC_OPCODE_ARC_TAN_2 }, { "CEILING.MATH" , SC_OPCODE_CEIL_MATH }, { "CEILING" , SC_OPCODE_CEIL }, { "CEILING.XCL" , SC_OPCODE_CEIL_MS }, { "CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE }, { "ISO.CEILING" , SC_OPCODE_CEIL_ISO }, { "FLOOR" , SC_OPCODE_FLOOR }, { "FLOOR.XCL" , SC_OPCODE_FLOOR_MS }, { "FLOOR.MATH" , SC_OPCODE_FLOOR_MATH }, { "FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE }, { "ROUND" , SC_OPCODE_ROUND }, { "ROUNDUP" , SC_OPCODE_ROUND_UP }, { "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN }, { "TRUNC" , SC_OPCODE_TRUNC }, { "LOG" , SC_OPCODE_LOG }, { "POWER" , SC_OPCODE_POWER }, { "GCD" , SC_OPCODE_GCD }, { "LCM" , SC_OPCODE_LCM }, { "MOD" , SC_OPCODE_MOD }, { "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT }, { "SUMSQ" , SC_OPCODE_SUM_SQ }, { "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 }, { "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 }, { "SUMXMY2" , SC_OPCODE_SUM_XMY2 }, { "DATE" , SC_OPCODE_GET_DATE }, { "TIME" , SC_OPCODE_GET_TIME }, { "DAYS" , SC_OPCODE_GET_DIFF_DATE }, { "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 }, { "DATEDIF" , SC_OPCODE_GET_DATEDIF }, { "MIN" , SC_OPCODE_MIN }, { "MINA" , SC_OPCODE_MIN_A }, { "MAX" , SC_OPCODE_MAX }, { "MAXA" , SC_OPCODE_MAX_A }, { "SUM" , SC_OPCODE_SUM }, { "PRODUCT" , SC_OPCODE_PRODUCT }, { "AVERAGE" , SC_OPCODE_AVERAGE }, { "AVERAGEA" , SC_OPCODE_AVERAGE_A }, { "COUNT" , SC_OPCODE_COUNT }, { "COUNTA" , SC_OPCODE_COUNT_2 }, { "NPV" , SC_OPCODE_NPV }, { "IRR" , SC_OPCODE_IRR }, { "MIRR" , SC_OPCODE_MIRR }, { "ISPMT" , SC_OPCODE_ISPMT }, { "VAR" , SC_OPCODE_VAR }, { "VARA" , SC_OPCODE_VAR_A }, { "VARP" , SC_OPCODE_VAR_P }, { "VARPA" , SC_OPCODE_VAR_P_A }, { "VAR.P" , SC_OPCODE_VAR_P_MS }, { "VAR.S" , SC_OPCODE_VAR_S }, { "STDEV" , SC_OPCODE_ST_DEV }, { "STDEVA" , SC_OPCODE_ST_DEV_A }, { "STDEVP" , SC_OPCODE_ST_DEV_P }, { "STDEVPA" , SC_OPCODE_ST_DEV_P_A }, { "STDEV.P" , SC_OPCODE_ST_DEV_P_MS }, { "STDEV.S" , SC_OPCODE_ST_DEV_S }, { "B" , SC_OPCODE_B }, { "NORMDIST" , SC_OPCODE_NORM_DIST }, { "NORM.DIST" , SC_OPCODE_NORM_DIST_MS }, { "EXPONDIST" , SC_OPCODE_EXP_DIST }, { "EXPON.DIST" , SC_OPCODE_EXP_DIST_MS }, { "BINOMDIST" , SC_OPCODE_BINOM_DIST }, { "BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS }, { "POISSON" , SC_OPCODE_POISSON_DIST }, { "POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS }, { "COMBIN" , SC_OPCODE_COMBIN }, { "COMBINA" , SC_OPCODE_COMBIN_A }, { "PERMUT" , SC_OPCODE_PERMUT }, { "PERMUTATIONA" , SC_OPCODE_PERMUTATION_A }, { "PV" , SC_OPCODE_PV }, { "SYD" , SC_OPCODE_SYD }, { "DDB" , SC_OPCODE_DDB }, { "DB" , SC_OPCODE_DB }, { "VDB" , SC_OPCODE_VBD }, { "DURATION" , SC_OPCODE_PDURATION }, // wrong but ODF1.1, keep it. { "SLN" , SC_OPCODE_SLN }, { "PMT" , SC_OPCODE_PMT }, { "COLUMNS" , SC_OPCODE_COLUMNS }, { "ROWS" , SC_OPCODE_ROWS }, { "SHEETS" , SC_OPCODE_SHEETS }, { "COLUMN" , SC_OPCODE_COLUMN }, { "ROW" , SC_OPCODE_ROW }, { "SHEET" , SC_OPCODE_SHEET }, { "ZGZ" , SC_OPCODE_RRI }, { "FV" , SC_OPCODE_FV }, { "NPER" , SC_OPCODE_NPER }, { "RATE" , SC_OPCODE_RATE }, { "IPMT" , SC_OPCODE_IPMT }, { "PPMT" , SC_OPCODE_PPMT }, { "CUMIPMT" , SC_OPCODE_CUM_IPMT }, { "CUMPRINC" , SC_OPCODE_CUM_PRINC }, { "EFFECTIVE" , SC_OPCODE_EFFECT }, { "NOMINAL" , SC_OPCODE_NOMINAL }, { "SUBTOTAL" , SC_OPCODE_SUB_TOTAL }, { "DSUM" , SC_OPCODE_DB_SUM }, { "DCOUNT" , SC_OPCODE_DB_COUNT }, { "DCOUNTA" , SC_OPCODE_DB_COUNT_2 }, { "DAVERAGE" , SC_OPCODE_DB_AVERAGE }, { "DGET" , SC_OPCODE_DB_GET }, { "DMAX" , SC_OPCODE_DB_MAX }, { "DMIN" , SC_OPCODE_DB_MIN }, { "DPRODUCT" , SC_OPCODE_DB_PRODUCT }, { "DSTDEV" , SC_OPCODE_DB_STD_DEV }, { "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P }, { "DVAR" , SC_OPCODE_DB_VAR }, { "DVARP" , SC_OPCODE_DB_VAR_P }, { "INDIRECT" , SC_OPCODE_INDIRECT }, { "ADDRESS" , SC_OPCODE_ADDRESS }, { "MATCH" , SC_OPCODE_MATCH }, { "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS }, { "COUNTIF" , SC_OPCODE_COUNT_IF }, { "SUMIF" , SC_OPCODE_SUM_IF }, { "AVERAGEIF" , SC_OPCODE_AVERAGE_IF }, { "SUMIFS" , SC_OPCODE_SUM_IFS }, { "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS }, { "COUNTIFS" , SC_OPCODE_COUNT_IFS }, { "LOOKUP" , SC_OPCODE_LOOKUP }, { "VLOOKUP" , SC_OPCODE_V_LOOKUP }, { "HLOOKUP" , SC_OPCODE_H_LOOKUP }, { "MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for range list (union) { "OFFSET" , SC_OPCODE_OFFSET }, { "INDEX" , SC_OPCODE_INDEX }, { "AREAS" , SC_OPCODE_AREAS }, { "DOLLAR" , SC_OPCODE_CURRENCY }, { "REPLACE" , SC_OPCODE_REPLACE }, { "FIXED" , SC_OPCODE_FIXED }, { "FIND" , SC_OPCODE_FIND }, { "EXACT" , SC_OPCODE_EXACT }, { "LEFT" , SC_OPCODE_LEFT }, { "RIGHT" , SC_OPCODE_RIGHT }, { "SEARCH" , SC_OPCODE_SEARCH }, { "MID" , SC_OPCODE_MID }, { "LENB" , SC_OPCODE_LENB }, { "RIGHTB" , SC_OPCODE_RIGHTB }, { "LEFTB" , SC_OPCODE_LEFTB }, { "REPLACEB" , SC_OPCODE_REPLACEB }, { "FINDB" , SC_OPCODE_FINDB }, { "SEARCHB" , SC_OPCODE_SEARCHB }, { "MIDB" , SC_OPCODE_MIDB }, { "TEXT" , SC_OPCODE_TEXT }, { "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE }, { "REPT" , SC_OPCODE_REPT }, { "CONCATENATE" , SC_OPCODE_CONCAT }, { "CONCAT" , SC_OPCODE_CONCAT_MS }, { "TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS }, { "IFS" , SC_OPCODE_IFS_MS }, { "SWITCH" , SC_OPCODE_SWITCH_MS }, { "MINIFS" , SC_OPCODE_MINIFS_MS }, { "MAXIFS" , SC_OPCODE_MAXIFS_MS }, { "MVALUE" , SC_OPCODE_MAT_VALUE }, { "MDETERM" , SC_OPCODE_MAT_DET }, { "MINVERSE" , SC_OPCODE_MAT_INV }, { "MMULT" , SC_OPCODE_MAT_MULT }, { "TRANSPOSE" , SC_OPCODE_MAT_TRANS }, { "MUNIT" , SC_OPCODE_MATRIX_UNIT }, { "GOALSEEK" , SC_OPCODE_BACK_SOLVER }, { "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST }, { "HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS }, { "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST }, { "LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS }, { "TDIST" , SC_OPCODE_T_DIST }, { "T.DIST.2T" , SC_OPCODE_T_DIST_2T }, { "T.DIST" , SC_OPCODE_T_DIST_MS }, { "T.DIST.RT" , SC_OPCODE_T_DIST_RT }, { "FDIST" , SC_OPCODE_F_DIST }, { "F.DIST" , SC_OPCODE_F_DIST_LT }, { "F.DIST.RT" , SC_OPCODE_F_DIST_RT }, { "CHIDIST" , SC_OPCODE_CHI_DIST }, { "CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS }, { "WEIBULL" , SC_OPCODE_WEIBULL }, { "WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS }, { "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT }, { "NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS }, { "CRITBINOM" , SC_OPCODE_CRIT_BINOM }, { "BINOM.INV" , SC_OPCODE_BINOM_INV }, { "KURT" , SC_OPCODE_KURT }, { "HARMEAN" , SC_OPCODE_HAR_MEAN }, { "GEOMEAN" , SC_OPCODE_GEO_MEAN }, { "STANDARDIZE" , SC_OPCODE_STANDARD }, { "AVEDEV" , SC_OPCODE_AVE_DEV }, { "SKEW" , SC_OPCODE_SKEW }, { "SKEWP" , SC_OPCODE_SKEWP }, { "DEVSQ" , SC_OPCODE_DEV_SQ }, { "MEDIAN" , SC_OPCODE_MEDIAN }, { "MODE" , SC_OPCODE_MODAL_VALUE }, { "MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS }, { "MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI }, { "ZTEST" , SC_OPCODE_Z_TEST }, { "Z.TEST" , SC_OPCODE_Z_TEST_MS }, { "AGGREGATE" , SC_OPCODE_AGGREGATE }, { "TTEST" , SC_OPCODE_T_TEST }, { "T.TEST" , SC_OPCODE_T_TEST_MS }, { "RANK" , SC_OPCODE_RANK }, { "PERCENTILE" , SC_OPCODE_PERCENTILE }, { "PERCENTRANK" , SC_OPCODE_PERCENT_RANK }, { "PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC }, { "PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC }, { "QUARTILE.INC" , SC_OPCODE_QUARTILE_INC }, { "RANK.EQ" , SC_OPCODE_RANK_EQ }, { "PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC }, { "PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC }, { "QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC }, { "RANK.AVG" , SC_OPCODE_RANK_AVG }, { "LARGE" , SC_OPCODE_LARGE }, { "SMALL" , SC_OPCODE_SMALL }, { "FREQUENCY" , SC_OPCODE_FREQUENCY }, { "QUARTILE" , SC_OPCODE_QUARTILE }, { "NORMINV" , SC_OPCODE_NORM_INV }, { "NORM.INV" , SC_OPCODE_NORM_INV_MS }, { "CONFIDENCE" , SC_OPCODE_CONFIDENCE }, { "CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N }, { "CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T }, { "FTEST" , SC_OPCODE_F_TEST }, { "F.TEST" , SC_OPCODE_F_TEST_MS }, { "TRIMMEAN" , SC_OPCODE_TRIM_MEAN }, { "PROB" , SC_OPCODE_PROB }, { "CORREL" , SC_OPCODE_CORREL }, { "COVAR" , SC_OPCODE_COVAR }, { "COVARIANCE.P" , SC_OPCODE_COVARIANCE_P }, { "COVARIANCE.S" , SC_OPCODE_COVARIANCE_S }, { "PEARSON" , SC_OPCODE_PEARSON }, { "RSQ" , SC_OPCODE_RSQ }, { "STEYX" , SC_OPCODE_STEYX }, { "SLOPE" , SC_OPCODE_SLOPE }, { "INTERCEPT" , SC_OPCODE_INTERCEPT }, { "TREND" , SC_OPCODE_TREND }, { "GROWTH" , SC_OPCODE_GROWTH }, { "LINEST" , SC_OPCODE_LINEST }, { "LOGEST" , SC_OPCODE_LOGEST }, { "FORECAST" , SC_OPCODE_FORECAST }, { "FORECAST.ETS.ADD" , SC_OPCODE_FORECAST_ETS_ADD }, { "FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA }, { "FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL }, { "FORECAST.ETS.PI.ADD" , SC_OPCODE_FORECAST_ETS_PIA }, { "FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM }, { "FORECAST.ETS.STAT.ADD" , SC_OPCODE_FORECAST_ETS_STA }, { "FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM }, { "FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN }, { "CHIINV" , SC_OPCODE_CHI_INV }, { "CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS }, { "GAMMADIST" , SC_OPCODE_GAMMA_DIST }, { "GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS }, { "GAMMAINV" , SC_OPCODE_GAMMA_INV }, { "GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS }, { "TINV" , SC_OPCODE_T_INV }, { "T.INV.2T" , SC_OPCODE_T_INV_2T }, { "T.INV" , SC_OPCODE_T_INV_MS }, { "FINV" , SC_OPCODE_F_INV }, { "F.INV" , SC_OPCODE_F_INV_LT }, { "F.INV.RT" , SC_OPCODE_F_INV_RT }, { "CHITEST" , SC_OPCODE_CHI_TEST }, { "CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS }, { "LOGINV" , SC_OPCODE_LOG_INV }, { "LOGNORM.INV" , SC_OPCODE_LOG_INV_MS }, { "TABLE" , SC_OPCODE_TABLE_OP }, { "BETADIST" , SC_OPCODE_BETA_DIST }, { "BETAINV" , SC_OPCODE_BETA_INV }, { "BETA.DIST" , SC_OPCODE_BETA_DIST_MS }, { "BETA.INV" , SC_OPCODE_BETA_INV_MS }, { "WEEKNUM" , SC_OPCODE_WEEK }, { "ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM }, { "WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO }, { "EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY }, { "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK }, { "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS }, { "NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS }, { "WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS }, { "#NAME!" , SC_OPCODE_NO_NAME }, { "STYLE" , SC_OPCODE_STYLE }, { "DDE" , SC_OPCODE_DDE }, { "BASE" , SC_OPCODE_BASE }, { "DECIMAL" , SC_OPCODE_DECIMAL }, { "CONVERT" , SC_OPCODE_CONVERT_OOO }, // wrong but ODF1.1, keep it { "ROMAN" , SC_OPCODE_ROMAN }, { "ARABIC" , SC_OPCODE_ARABIC }, { "HYPERLINK" , SC_OPCODE_HYPERLINK }, { "INFO" , SC_OPCODE_INFO }, { "BAHTTEXT" , SC_OPCODE_BAHTTEXT }, { "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA }, { "EUROCONVERT" , SC_OPCODE_EUROCONVERT }, { "NUMBERVALUE" , SC_OPCODE_NUMBERVALUE }, { "GAMMA" , SC_OPCODE_GAMMA }, { "CHISQDIST" , SC_OPCODE_CHISQ_DIST }, { "CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS }, { "CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS }, { "CHISQINV" , SC_OPCODE_CHISQ_INV }, { "BITAND" , SC_OPCODE_BITAND }, { "BITOR" , SC_OPCODE_BITOR }, { "BITXOR" , SC_OPCODE_BITXOR }, { "BITRSHIFT" , SC_OPCODE_BITRSHIFT }, { "BITLSHIFT" , SC_OPCODE_BITLSHIFT }, /* BEGIN defined ERROR.TYPE() values. */ { "#NULL!" , SC_OPCODE_ERROR_NULL }, { "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO }, { "#VALUE!" , SC_OPCODE_ERROR_VALUE }, { "#REF!" , SC_OPCODE_ERROR_REF }, { "#NAME?" , SC_OPCODE_ERROR_NAME }, { "#NUM!" , SC_OPCODE_ERROR_NUM }, { "#N/A" , SC_OPCODE_ERROR_NA }, /* END defined ERROR.TYPE() values. */ { "FILTERXML" , SC_OPCODE_FILTERXML }, { "WEBSERVICE" , SC_OPCODE_WEBSERVICE }, { "COLOR" , SC_OPCODE_COLOR }, { "ERF.PRECISE" , SC_OPCODE_ERF_MS }, { "ERFC.PRECISE" , SC_OPCODE_ERFC_MS }, { "ENCODEURL" , SC_OPCODE_ENCODEURL }, { "RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT }, { "ROUNDSIG" , SC_OPCODE_ROUNDSIG }, { "REGEX" , SC_OPCODE_REGEX }, { "FOURIER", SC_OPCODE_FOURIER }, { "RAND.NV" , SC_OPCODE_RANDOM_NV }, { "RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV }, { nullptr, -1 } }; /** These English names are used for XFunctionAccess API. */ // DO NOT CHANGE NAMES! Only add functions. // If there is a reason for another name for some function then add an // *additional* name to be recognized to sc/source/core/tool/compiler.cxx // ScCompiler::IsOpCode(). const std::pair RID_STRLIST_FUNCTION_NAMES_ENGLISH_API[] = { { "IF" , SC_OPCODE_IF }, { "IFERROR" , SC_OPCODE_IF_ERROR }, { "IFNA" , SC_OPCODE_IF_NA }, { "CHOOSE" , SC_OPCODE_CHOOSE }, { "(" , SC_OPCODE_OPEN }, { ")" , SC_OPCODE_CLOSE }, { "[" , SC_OPCODE_TABLE_REF_OPEN }, { "]" , SC_OPCODE_TABLE_REF_CLOSE }, { "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL }, { "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS }, { "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA }, { "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS }, { "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW }, { "{" , SC_OPCODE_ARRAY_OPEN }, { "}" , SC_OPCODE_ARRAY_CLOSE }, { "|" , SC_OPCODE_ARRAY_ROW_SEP }, { ";" , SC_OPCODE_ARRAY_COL_SEP }, { ";" , SC_OPCODE_SEP }, { "%" , SC_OPCODE_PERCENT_SIGN }, { "+" , SC_OPCODE_ADD }, { "-" , SC_OPCODE_SUB }, { "*" , SC_OPCODE_MUL }, { "/" , SC_OPCODE_DIV }, { "&" , SC_OPCODE_AMPERSAND }, { "^" , SC_OPCODE_POW }, { "=" , SC_OPCODE_EQUAL }, { "<>" , SC_OPCODE_NOT_EQUAL }, { "<" , SC_OPCODE_LESS }, { ">" , SC_OPCODE_GREATER }, { "<=" , SC_OPCODE_LESS_EQUAL }, { ">=" , SC_OPCODE_GREATER_EQUAL }, { "AND" , SC_OPCODE_AND }, { "OR" , SC_OPCODE_OR }, { "XOR" , SC_OPCODE_XOR }, { "!" , SC_OPCODE_INTERSECT }, { "~" , SC_OPCODE_UNION }, { ":" , SC_OPCODE_RANGE }, { "NOT" , SC_OPCODE_NOT }, { "NEG" , SC_OPCODE_NEG }, { "-" , SC_OPCODE_NEG_SUB }, { "PI" , SC_OPCODE_PI }, { "RAND" , SC_OPCODE_RANDOM }, { "TRUE" , SC_OPCODE_TRUE }, { "FALSE" , SC_OPCODE_FALSE }, { "TODAY" , SC_OPCODE_GET_ACT_DATE }, { "NOW" , SC_OPCODE_GET_ACT_TIME }, { "NA" , SC_OPCODE_NO_VALUE }, { "CURRENT" , SC_OPCODE_CURRENT }, { "DEGREES" , SC_OPCODE_DEG }, { "RADIANS" , SC_OPCODE_RAD }, { "SIN" , SC_OPCODE_SIN }, { "COS" , SC_OPCODE_COS }, { "TAN" , SC_OPCODE_TAN }, { "COT" , SC_OPCODE_COT }, { "ASIN" , SC_OPCODE_ARC_SIN }, { "ACOS" , SC_OPCODE_ARC_COS }, { "ATAN" , SC_OPCODE_ARC_TAN }, { "ACOT" , SC_OPCODE_ARC_COT }, { "SINH" , SC_OPCODE_SIN_HYP }, { "COSH" , SC_OPCODE_COS_HYP }, { "TANH" , SC_OPCODE_TAN_HYP }, { "COTH" , SC_OPCODE_COT_HYP }, { "ASINH" , SC_OPCODE_ARC_SIN_HYP }, { "ACOSH" , SC_OPCODE_ARC_COS_HYP }, { "ATANH" , SC_OPCODE_ARC_TAN_HYP }, { "ACOTH" , SC_OPCODE_ARC_COT_HYP }, { "CSC" , SC_OPCODE_COSECANT }, { "SEC" , SC_OPCODE_SECANT }, { "CSCH" , SC_OPCODE_COSECANT_HYP }, { "SECH" , SC_OPCODE_SECANT_HYP }, { "EXP" , SC_OPCODE_EXP }, { "LN" , SC_OPCODE_LN }, { "SQRT" , SC_OPCODE_SQRT }, { "FACT" , SC_OPCODE_FACT }, { "YEAR" , SC_OPCODE_GET_YEAR }, { "MONTH" , SC_OPCODE_GET_MONTH }, { "DAY" , SC_OPCODE_GET_DAY }, { "HOUR" , SC_OPCODE_GET_HOUR }, { "MINUTE" , SC_OPCODE_GET_MIN }, { "SECOND" , SC_OPCODE_GET_SEC }, { "SIGN" , SC_OPCODE_PLUS_MINUS }, { "ABS" , SC_OPCODE_ABS }, { "INT" , SC_OPCODE_INT }, { "PHI" , SC_OPCODE_PHI }, { "GAUSS" , SC_OPCODE_GAUSS }, { "ISBLANK" , SC_OPCODE_IS_EMPTY }, { "ISTEXT" , SC_OPCODE_IS_STRING }, { "ISNONTEXT" , SC_OPCODE_IS_NON_STRING }, { "ISLOGICAL" , SC_OPCODE_IS_LOGICAL }, { "TYPE" , SC_OPCODE_TYPE }, { "CELL" , SC_OPCODE_CELL }, { "ISREF" , SC_OPCODE_IS_REF }, { "ISNUMBER" , SC_OPCODE_IS_VALUE }, { "ISFORMULA" , SC_OPCODE_IS_FORMULA }, { "ISNA" , SC_OPCODE_IS_NV }, { "ISERR" , SC_OPCODE_IS_ERR }, { "ISERROR" , SC_OPCODE_IS_ERROR }, { "ISEVEN" , SC_OPCODE_IS_EVEN }, { "ISODD" , SC_OPCODE_IS_ODD }, { "N" , SC_OPCODE_N }, { "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE }, { "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE }, { "CODE" , SC_OPCODE_CODE }, { "TRIM" , SC_OPCODE_TRIM }, { "UPPER" , SC_OPCODE_UPPER }, { "PROPER" , SC_OPCODE_PROPER }, { "LOWER" , SC_OPCODE_LOWER }, { "LEN" , SC_OPCODE_LEN }, { "T" , SC_OPCODE_T }, { "VALUE" , SC_OPCODE_VALUE }, { "CLEAN" , SC_OPCODE_CLEAN }, { "CHAR" , SC_OPCODE_CHAR }, { "JIS" , SC_OPCODE_JIS }, { "ASC" , SC_OPCODE_ASC }, { "UNICODE" , SC_OPCODE_UNICODE }, { "UNICHAR" , SC_OPCODE_UNICHAR }, { "LOG10" , SC_OPCODE_LOG10 }, { "EVEN" , SC_OPCODE_EVEN }, { "ODD" , SC_OPCODE_ODD }, { "NORMSDIST" , SC_OPCODE_STD_NORM_DIST }, { "NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS }, { "FISHER" , SC_OPCODE_FISHER }, { "FISHERINV" , SC_OPCODE_FISHER_INV }, { "NORMSINV" , SC_OPCODE_S_NORM_INV }, { "NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS }, { "GAMMALN" , SC_OPCODE_GAMMA_LN }, { "GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS }, { "ERRORTYPE" , SC_OPCODE_ERROR_TYPE }, { "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF }, { "FORMULA" , SC_OPCODE_FORMULA }, { "ATAN2" , SC_OPCODE_ARC_TAN_2 }, { "CEILING.MATH" , SC_OPCODE_CEIL_MATH }, { "CEILING" , SC_OPCODE_CEIL }, { "CEILING.XCL" , SC_OPCODE_CEIL_MS }, { "CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE }, { "ISO.CEILING" , SC_OPCODE_CEIL_ISO }, { "FLOOR" , SC_OPCODE_FLOOR }, { "FLOOR.XCL" , SC_OPCODE_FLOOR_MS }, { "FLOOR.MATH" , SC_OPCODE_FLOOR_MATH }, { "FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE }, { "ROUND" , SC_OPCODE_ROUND }, { "ROUNDUP" , SC_OPCODE_ROUND_UP }, { "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN }, { "TRUNC" , SC_OPCODE_TRUNC }, { "LOG" , SC_OPCODE_LOG }, { "POWER" , SC_OPCODE_POWER }, { "GCD" , SC_OPCODE_GCD }, { "LCM" , SC_OPCODE_LCM }, { "MOD" , SC_OPCODE_MOD }, { "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT }, { "SUMSQ" , SC_OPCODE_SUM_SQ }, { "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 }, { "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 }, { "SUMXMY2" , SC_OPCODE_SUM_XMY2 }, { "DATE" , SC_OPCODE_GET_DATE }, { "TIME" , SC_OPCODE_GET_TIME }, { "DAYS" , SC_OPCODE_GET_DIFF_DATE }, { "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 }, { "DATEDIF" , SC_OPCODE_GET_DATEDIF }, { "MIN" , SC_OPCODE_MIN }, { "MINA" , SC_OPCODE_MIN_A }, { "MAX" , SC_OPCODE_MAX }, { "MAXA" , SC_OPCODE_MAX_A }, { "SUM" , SC_OPCODE_SUM }, { "PRODUCT" , SC_OPCODE_PRODUCT }, { "AVERAGE" , SC_OPCODE_AVERAGE }, { "AVERAGEA" , SC_OPCODE_AVERAGE_A }, { "COUNT" , SC_OPCODE_COUNT }, { "COUNTA" , SC_OPCODE_COUNT_2 }, { "NPV" , SC_OPCODE_NPV }, { "IRR" , SC_OPCODE_IRR }, { "MIRR" , SC_OPCODE_MIRR }, { "ISPMT" , SC_OPCODE_ISPMT }, { "VAR" , SC_OPCODE_VAR }, { "VARA" , SC_OPCODE_VAR_A }, { "VARP" , SC_OPCODE_VAR_P }, { "VARPA" , SC_OPCODE_VAR_P_A }, { "VAR.P" , SC_OPCODE_VAR_P_MS }, { "VAR.S" , SC_OPCODE_VAR_S }, { "STDEV" , SC_OPCODE_ST_DEV }, { "STDEVA" , SC_OPCODE_ST_DEV_A }, { "STDEVP" , SC_OPCODE_ST_DEV_P }, { "STDEVPA" , SC_OPCODE_ST_DEV_P_A }, { "STDEV.P" , SC_OPCODE_ST_DEV_P_MS }, { "STDEV.S" , SC_OPCODE_ST_DEV_S }, { "B" , SC_OPCODE_B }, { "NORMDIST" , SC_OPCODE_NORM_DIST }, { "NORM.DIST" , SC_OPCODE_NORM_DIST_MS }, { "EXPONDIST" , SC_OPCODE_EXP_DIST }, { "EXPON.DIST" , SC_OPCODE_EXP_DIST_MS }, { "BINOMDIST" , SC_OPCODE_BINOM_DIST }, { "BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS }, { "POISSON" , SC_OPCODE_POISSON_DIST }, { "POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS }, { "COMBIN" , SC_OPCODE_COMBIN }, { "COMBINA" , SC_OPCODE_COMBIN_A }, { "PERMUT" , SC_OPCODE_PERMUT }, { "PERMUTATIONA" , SC_OPCODE_PERMUTATION_A }, { "PV" , SC_OPCODE_PV }, { "SYD" , SC_OPCODE_SYD }, { "DDB" , SC_OPCODE_DDB }, { "DB" , SC_OPCODE_DB }, { "VDB" , SC_OPCODE_VBD }, { "DURATION" , SC_OPCODE_PDURATION }, { "SLN" , SC_OPCODE_SLN }, { "PMT" , SC_OPCODE_PMT }, { "COLUMNS" , SC_OPCODE_COLUMNS }, { "ROWS" , SC_OPCODE_ROWS }, { "SHEETS" , SC_OPCODE_SHEETS }, { "COLUMN" , SC_OPCODE_COLUMN }, { "ROW" , SC_OPCODE_ROW }, { "SHEET" , SC_OPCODE_SHEET }, { "ZGZ" , SC_OPCODE_RRI }, { "FV" , SC_OPCODE_FV }, { "NPER" , SC_OPCODE_NPER }, { "RATE" , SC_OPCODE_RATE }, { "IPMT" , SC_OPCODE_IPMT }, { "PPMT" , SC_OPCODE_PPMT }, { "CUMIPMT" , SC_OPCODE_CUM_IPMT }, { "CUMPRINC" , SC_OPCODE_CUM_PRINC }, { "EFFECTIVE" , SC_OPCODE_EFFECT }, { "NOMINAL" , SC_OPCODE_NOMINAL }, { "SUBTOTAL" , SC_OPCODE_SUB_TOTAL }, { "DSUM" , SC_OPCODE_DB_SUM }, { "DCOUNT" , SC_OPCODE_DB_COUNT }, { "DCOUNTA" , SC_OPCODE_DB_COUNT_2 }, { "DAVERAGE" , SC_OPCODE_DB_AVERAGE }, { "DGET" , SC_OPCODE_DB_GET }, { "DMAX" , SC_OPCODE_DB_MAX }, { "DMIN" , SC_OPCODE_DB_MIN }, { "DPRODUCT" , SC_OPCODE_DB_PRODUCT }, { "DSTDEV" , SC_OPCODE_DB_STD_DEV }, { "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P }, { "DVAR" , SC_OPCODE_DB_VAR }, { "DVARP" , SC_OPCODE_DB_VAR_P }, { "INDIRECT" , SC_OPCODE_INDIRECT }, { "ADDRESS" , SC_OPCODE_ADDRESS }, { "MATCH" , SC_OPCODE_MATCH }, { "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS }, { "COUNTIF" , SC_OPCODE_COUNT_IF }, { "SUMIF" , SC_OPCODE_SUM_IF }, { "AVERAGEIF" , SC_OPCODE_AVERAGE_IF }, { "SUMIFS" , SC_OPCODE_SUM_IFS }, { "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS }, { "COUNTIFS" , SC_OPCODE_COUNT_IFS }, { "LOOKUP" , SC_OPCODE_LOOKUP }, { "VLOOKUP" , SC_OPCODE_V_LOOKUP }, { "HLOOKUP" , SC_OPCODE_H_LOOKUP }, { "MULTIRANGE" , SC_OPCODE_MULTI_AREA }, // legacy for range list (union) { "OFFSET" , SC_OPCODE_OFFSET }, { "INDEX" , SC_OPCODE_INDEX }, // ?? first character = I ?? { "AREAS" , SC_OPCODE_AREAS }, { "DOLLAR" , SC_OPCODE_CURRENCY }, { "REPLACE" , SC_OPCODE_REPLACE }, { "FIXED" , SC_OPCODE_FIXED }, { "FIND" , SC_OPCODE_FIND }, { "EXACT" , SC_OPCODE_EXACT }, { "LEFT" , SC_OPCODE_LEFT }, { "RIGHT" , SC_OPCODE_RIGHT }, { "SEARCH" , SC_OPCODE_SEARCH }, { "MID" , SC_OPCODE_MID }, { "LENB" , SC_OPCODE_LENB }, { "RIGHTB" , SC_OPCODE_RIGHTB }, { "LEFTB" , SC_OPCODE_LEFTB }, { "REPLACEB" , SC_OPCODE_REPLACEB }, { "FINDB" , SC_OPCODE_FINDB }, { "SEARCHB" , SC_OPCODE_SEARCHB }, { "MIDB" , SC_OPCODE_MIDB }, { "TEXT" , SC_OPCODE_TEXT }, { "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE }, { "REPT" , SC_OPCODE_REPT }, { "CONCATENATE" , SC_OPCODE_CONCAT }, { "CONCAT" , SC_OPCODE_CONCAT_MS }, { "TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS }, { "IFS" , SC_OPCODE_IFS_MS }, { "SWITCH" , SC_OPCODE_SWITCH_MS }, { "MINIFS" , SC_OPCODE_MINIFS_MS }, { "MAXIFS" , SC_OPCODE_MAXIFS_MS }, { "MVALUE" , SC_OPCODE_MAT_VALUE }, { "MDETERM" , SC_OPCODE_MAT_DET }, { "MINVERSE" , SC_OPCODE_MAT_INV }, { "MMULT" , SC_OPCODE_MAT_MULT }, { "TRANSPOSE" , SC_OPCODE_MAT_TRANS }, { "MUNIT" , SC_OPCODE_MATRIX_UNIT }, { "GOALSEEK" , SC_OPCODE_BACK_SOLVER }, { "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST }, { "HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS }, { "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST }, { "LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS }, { "TDIST" , SC_OPCODE_T_DIST }, { "T.DIST.2T" , SC_OPCODE_T_DIST_2T }, { "T.DIST" , SC_OPCODE_T_DIST_MS }, { "T.DIST.RT" , SC_OPCODE_T_DIST_RT }, { "FDIST" , SC_OPCODE_F_DIST }, { "F.DIST" , SC_OPCODE_F_DIST_LT }, { "F.DIST.RT" , SC_OPCODE_F_DIST_RT }, { "CHIDIST" , SC_OPCODE_CHI_DIST }, { "CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS }, { "WEIBULL" , SC_OPCODE_WEIBULL }, { "WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS }, { "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT }, { "NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS }, { "CRITBINOM" , SC_OPCODE_CRIT_BINOM }, { "BINOM.INV" , SC_OPCODE_BINOM_INV }, { "KURT" , SC_OPCODE_KURT }, { "HARMEAN" , SC_OPCODE_HAR_MEAN }, { "GEOMEAN" , SC_OPCODE_GEO_MEAN }, { "STANDARDIZE" , SC_OPCODE_STANDARD }, { "AVEDEV" , SC_OPCODE_AVE_DEV }, { "SKEW" , SC_OPCODE_SKEW }, { "SKEWP" , SC_OPCODE_SKEWP }, { "DEVSQ" , SC_OPCODE_DEV_SQ }, { "MEDIAN" , SC_OPCODE_MEDIAN }, { "MODE" , SC_OPCODE_MODAL_VALUE }, { "MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS }, { "MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI }, { "ZTEST" , SC_OPCODE_Z_TEST }, { "Z.TEST" , SC_OPCODE_Z_TEST_MS }, { "AGGREGATE" , SC_OPCODE_AGGREGATE }, { "TTEST" , SC_OPCODE_T_TEST }, { "T.TEST" , SC_OPCODE_T_TEST_MS }, { "RANK" , SC_OPCODE_RANK }, { "PERCENTILE" , SC_OPCODE_PERCENTILE }, { "PERCENTRANK" , SC_OPCODE_PERCENT_RANK }, { "PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC }, { "PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC }, { "QUARTILE.INC" , SC_OPCODE_QUARTILE_INC }, { "RANK.EQ" , SC_OPCODE_RANK_EQ }, { "PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC }, { "PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC }, { "QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC }, { "RANK.AVG" , SC_OPCODE_RANK_AVG }, { "LARGE" , SC_OPCODE_LARGE }, { "SMALL" , SC_OPCODE_SMALL }, { "FREQUENCY" , SC_OPCODE_FREQUENCY }, { "QUARTILE" , SC_OPCODE_QUARTILE }, { "NORMINV" , SC_OPCODE_NORM_INV }, { "NORM.INV" , SC_OPCODE_NORM_INV_MS }, { "CONFIDENCE" , SC_OPCODE_CONFIDENCE }, { "CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N }, { "CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T }, { "FTEST" , SC_OPCODE_F_TEST }, { "F.TEST" , SC_OPCODE_F_TEST_MS }, { "TRIMMEAN" , SC_OPCODE_TRIM_MEAN }, { "PROB" , SC_OPCODE_PROB }, { "CORREL" , SC_OPCODE_CORREL }, { "COVAR" , SC_OPCODE_COVAR }, { "COVARIANCE.P" , SC_OPCODE_COVARIANCE_P }, { "COVARIANCE.S" , SC_OPCODE_COVARIANCE_S }, { "PEARSON" , SC_OPCODE_PEARSON }, { "RSQ" , SC_OPCODE_RSQ }, { "STEYX" , SC_OPCODE_STEYX }, { "SLOPE" , SC_OPCODE_SLOPE }, { "INTERCEPT" , SC_OPCODE_INTERCEPT }, { "TREND" , SC_OPCODE_TREND }, { "GROWTH" , SC_OPCODE_GROWTH }, { "LINEST" , SC_OPCODE_LINEST }, { "LOGEST" , SC_OPCODE_LOGEST }, { "FORECAST" , SC_OPCODE_FORECAST }, { "FORECAST.ETS.ADD" , SC_OPCODE_FORECAST_ETS_ADD }, { "FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA }, { "FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL }, { "FORECAST.ETS.PI.ADD" , SC_OPCODE_FORECAST_ETS_PIA }, { "FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM }, { "FORECAST.ETS.STAT.ADD" , SC_OPCODE_FORECAST_ETS_STA }, { "FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM }, { "FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN }, { "CHIINV" , SC_OPCODE_CHI_INV }, { "CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS }, { "GAMMADIST" , SC_OPCODE_GAMMA_DIST }, { "GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS }, { "GAMMAINV" , SC_OPCODE_GAMMA_INV }, { "GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS }, { "TINV" , SC_OPCODE_T_INV }, { "T.INV.2T" , SC_OPCODE_T_INV_2T }, { "T.INV" , SC_OPCODE_T_INV_MS }, { "FINV" , SC_OPCODE_F_INV }, { "F.INV" , SC_OPCODE_F_INV_LT }, { "F.INV.RT" , SC_OPCODE_F_INV_RT }, { "CHITEST" , SC_OPCODE_CHI_TEST }, { "CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS }, { "LOGINV" , SC_OPCODE_LOG_INV }, { "LOGNORM.INV" , SC_OPCODE_LOG_INV_MS }, { "TABLE" , SC_OPCODE_TABLE_OP }, { "BETADIST" , SC_OPCODE_BETA_DIST }, { "BETAINV" , SC_OPCODE_BETA_INV }, { "BETA.DIST" , SC_OPCODE_BETA_DIST_MS }, { "BETA.INV" , SC_OPCODE_BETA_INV_MS }, { "WEEKNUM" , SC_OPCODE_WEEK }, { "ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM }, { "WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO }, { "EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY }, { "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK }, { "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS }, { "NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS }, { "WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS }, { "#NAME!" , SC_OPCODE_NO_NAME }, { "STYLE" , SC_OPCODE_STYLE }, { "DDE" , SC_OPCODE_DDE }, { "BASE" , SC_OPCODE_BASE }, { "DECIMAL" , SC_OPCODE_DECIMAL }, { "CONVERT" , SC_OPCODE_CONVERT_OOO }, { "ROMAN" , SC_OPCODE_ROMAN }, { "ARABIC" , SC_OPCODE_ARABIC }, { "HYPERLINK" , SC_OPCODE_HYPERLINK }, { "INFO" , SC_OPCODE_INFO }, { "BAHTTEXT" , SC_OPCODE_BAHTTEXT }, { "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA }, { "EUROCONVERT" , SC_OPCODE_EUROCONVERT }, { "NUMBERVALUE" , SC_OPCODE_NUMBERVALUE }, { "GAMMA" , SC_OPCODE_GAMMA }, { "CHISQDIST" , SC_OPCODE_CHISQ_DIST }, { "CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS }, { "CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS }, { "CHISQINV" , SC_OPCODE_CHISQ_INV }, { "BITAND" , SC_OPCODE_BITAND }, { "BITOR" , SC_OPCODE_BITOR }, { "BITXOR" , SC_OPCODE_BITXOR }, { "BITRSHIFT" , SC_OPCODE_BITRSHIFT }, { "BITLSHIFT" , SC_OPCODE_BITLSHIFT }, { "#NULL!" , SC_OPCODE_ERROR_NULL }, { "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO }, { "#VALUE!" , SC_OPCODE_ERROR_VALUE }, { "#REF!" , SC_OPCODE_ERROR_REF }, { "#NAME?" , SC_OPCODE_ERROR_NAME }, { "#NUM!" , SC_OPCODE_ERROR_NUM }, { "#N/A" , SC_OPCODE_ERROR_NA }, /* END defined ERROR.TYPE() values. */ { "FILTERXML" , SC_OPCODE_FILTERXML }, { "WEBSERVICE" , SC_OPCODE_WEBSERVICE }, { "COLOR" , SC_OPCODE_COLOR }, { "ERF.PRECISE" , SC_OPCODE_ERF_MS }, { "ERFC.PRECISE" , SC_OPCODE_ERFC_MS }, { "ENCODEURL" , SC_OPCODE_ENCODEURL }, { "RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT }, { "ROUNDSIG" , SC_OPCODE_ROUNDSIG }, { "REGEX" , SC_OPCODE_REGEX }, { "FOURIER", SC_OPCODE_FOURIER }, { "RAND.NV" , SC_OPCODE_RANDOM_NV }, { "RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV }, { nullptr, -1 } }; /** These English names can be chosen in the UI and can be changed. They should match the [en-US] names of RID_STRLIST_FUNCTION_NAMES below. */ // As such they are a duplicate, but we can not have two string localizations // at the same time. const std::pair RID_STRLIST_FUNCTION_NAMES_ENGLISH[] = { { "IF" , SC_OPCODE_IF }, { "IFERROR" , SC_OPCODE_IF_ERROR }, { "IFNA" , SC_OPCODE_IF_NA }, { "CHOOSE" , SC_OPCODE_CHOOSE }, { "(" , SC_OPCODE_OPEN }, { ")" , SC_OPCODE_CLOSE }, { "[" , SC_OPCODE_TABLE_REF_OPEN }, { "]" , SC_OPCODE_TABLE_REF_CLOSE }, { "#All" , SC_OPCODE_TABLE_REF_ITEM_ALL }, { "#Headers" , SC_OPCODE_TABLE_REF_ITEM_HEADERS }, { "#Data" , SC_OPCODE_TABLE_REF_ITEM_DATA }, { "#Totals" , SC_OPCODE_TABLE_REF_ITEM_TOTALS }, { "#This Row" , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW }, { "{" , SC_OPCODE_ARRAY_OPEN }, { "}" , SC_OPCODE_ARRAY_CLOSE }, { "|" , SC_OPCODE_ARRAY_ROW_SEP }, { ";" , SC_OPCODE_ARRAY_COL_SEP }, { ";" , SC_OPCODE_SEP }, { "%" , SC_OPCODE_PERCENT_SIGN }, { "+" , SC_OPCODE_ADD }, { "-" , SC_OPCODE_SUB }, { "*" , SC_OPCODE_MUL }, { "/" , SC_OPCODE_DIV }, { "&" , SC_OPCODE_AMPERSAND }, { "^" , SC_OPCODE_POW }, { "=" , SC_OPCODE_EQUAL }, { "<>" , SC_OPCODE_NOT_EQUAL }, { "<" , SC_OPCODE_LESS }, { ">" , SC_OPCODE_GREATER }, { "<=" , SC_OPCODE_LESS_EQUAL }, { ">=" , SC_OPCODE_GREATER_EQUAL }, { "AND" , SC_OPCODE_AND }, { "OR" , SC_OPCODE_OR }, { "XOR" , SC_OPCODE_XOR }, { "!" , SC_OPCODE_INTERSECT }, { "~" , SC_OPCODE_UNION }, { ":" , SC_OPCODE_RANGE }, { "NOT" , SC_OPCODE_NOT }, { "NEG" , SC_OPCODE_NEG }, { "-" , SC_OPCODE_NEG_SUB }, { "PI" , SC_OPCODE_PI }, { "RAND" , SC_OPCODE_RANDOM }, { "TRUE" , SC_OPCODE_TRUE }, { "FALSE" , SC_OPCODE_FALSE }, { "TODAY" , SC_OPCODE_GET_ACT_DATE }, { "NOW" , SC_OPCODE_GET_ACT_TIME }, { "NA" , SC_OPCODE_NO_VALUE }, { "CURRENT" , SC_OPCODE_CURRENT }, { "DEGREES" , SC_OPCODE_DEG }, { "RADIANS" , SC_OPCODE_RAD }, { "SIN" , SC_OPCODE_SIN }, { "COS" , SC_OPCODE_COS }, { "TAN" , SC_OPCODE_TAN }, { "COT" , SC_OPCODE_COT }, { "ASIN" , SC_OPCODE_ARC_SIN }, { "ACOS" , SC_OPCODE_ARC_COS }, { "ATAN" , SC_OPCODE_ARC_TAN }, { "ACOT" , SC_OPCODE_ARC_COT }, { "SINH" , SC_OPCODE_SIN_HYP }, { "COSH" , SC_OPCODE_COS_HYP }, { "TANH" , SC_OPCODE_TAN_HYP }, { "COTH" , SC_OPCODE_COT_HYP }, { "ASINH" , SC_OPCODE_ARC_SIN_HYP }, { "ACOSH" , SC_OPCODE_ARC_COS_HYP }, { "ATANH" , SC_OPCODE_ARC_TAN_HYP }, { "ACOTH" , SC_OPCODE_ARC_COT_HYP }, { "CSC" , SC_OPCODE_COSECANT }, { "SEC" , SC_OPCODE_SECANT }, { "CSCH" , SC_OPCODE_COSECANT_HYP }, { "SECH" , SC_OPCODE_SECANT_HYP }, { "EXP" , SC_OPCODE_EXP }, { "LN" , SC_OPCODE_LN }, { "SQRT" , SC_OPCODE_SQRT }, { "FACT" , SC_OPCODE_FACT }, { "YEAR" , SC_OPCODE_GET_YEAR }, { "MONTH" , SC_OPCODE_GET_MONTH }, { "DAY" , SC_OPCODE_GET_DAY }, { "HOUR" , SC_OPCODE_GET_HOUR }, { "MINUTE" , SC_OPCODE_GET_MIN }, { "SECOND" , SC_OPCODE_GET_SEC }, { "SIGN" , SC_OPCODE_PLUS_MINUS }, { "ABS" , SC_OPCODE_ABS }, { "INT" , SC_OPCODE_INT }, { "PHI" , SC_OPCODE_PHI }, { "GAUSS" , SC_OPCODE_GAUSS }, { "ISBLANK" , SC_OPCODE_IS_EMPTY }, { "ISTEXT" , SC_OPCODE_IS_STRING }, { "ISNONTEXT" , SC_OPCODE_IS_NON_STRING }, { "ISLOGICAL" , SC_OPCODE_IS_LOGICAL }, { "TYPE" , SC_OPCODE_TYPE }, { "CELL" , SC_OPCODE_CELL }, { "ISREF" , SC_OPCODE_IS_REF }, { "ISNUMBER" , SC_OPCODE_IS_VALUE }, { "ISFORMULA" , SC_OPCODE_IS_FORMULA }, { "ISNA" , SC_OPCODE_IS_NV }, { "ISERR" , SC_OPCODE_IS_ERR }, { "ISERROR" , SC_OPCODE_IS_ERROR }, { "ISEVEN" , SC_OPCODE_IS_EVEN }, { "ISODD" , SC_OPCODE_IS_ODD }, { "N" , SC_OPCODE_N }, { "DATEVALUE" , SC_OPCODE_GET_DATE_VALUE }, { "TIMEVALUE" , SC_OPCODE_GET_TIME_VALUE }, { "CODE" , SC_OPCODE_CODE }, { "TRIM" , SC_OPCODE_TRIM }, { "UPPER" , SC_OPCODE_UPPER }, { "PROPER" , SC_OPCODE_PROPER }, { "LOWER" , SC_OPCODE_LOWER }, { "LEN" , SC_OPCODE_LEN }, { "T" , SC_OPCODE_T }, { "VALUE" , SC_OPCODE_VALUE }, { "CLEAN" , SC_OPCODE_CLEAN }, { "CHAR" , SC_OPCODE_CHAR }, { "JIS" , SC_OPCODE_JIS }, { "ASC" , SC_OPCODE_ASC }, { "UNICODE" , SC_OPCODE_UNICODE }, { "UNICHAR" , SC_OPCODE_UNICHAR }, { "LOG10" , SC_OPCODE_LOG10 }, { "EVEN" , SC_OPCODE_EVEN }, { "ODD" , SC_OPCODE_ODD }, { "NORMSDIST" , SC_OPCODE_STD_NORM_DIST }, { "NORM.S.DIST" , SC_OPCODE_STD_NORM_DIST_MS }, { "FISHER" , SC_OPCODE_FISHER }, { "FISHERINV" , SC_OPCODE_FISHER_INV }, { "NORMSINV" , SC_OPCODE_S_NORM_INV }, { "NORM.S.INV" , SC_OPCODE_S_NORM_INV_MS }, { "GAMMALN" , SC_OPCODE_GAMMA_LN }, { "GAMMALN.PRECISE" , SC_OPCODE_GAMMA_LN_MS }, { "ERRORTYPE" , SC_OPCODE_ERROR_TYPE }, { "ERROR.TYPE" , SC_OPCODE_ERROR_TYPE_ODF }, { "FORMULA" , SC_OPCODE_FORMULA }, { "ATAN2" , SC_OPCODE_ARC_TAN_2 }, { "CEILING.MATH" , SC_OPCODE_CEIL_MATH }, { "CEILING" , SC_OPCODE_CEIL }, { "CEILING.XCL" , SC_OPCODE_CEIL_MS }, { "CEILING.PRECISE" , SC_OPCODE_CEIL_PRECISE }, { "ISO.CEILING" , SC_OPCODE_CEIL_ISO }, { "FLOOR" , SC_OPCODE_FLOOR }, { "FLOOR.XCL" , SC_OPCODE_FLOOR_MS }, { "FLOOR.MATH" , SC_OPCODE_FLOOR_MATH }, { "FLOOR.PRECISE" , SC_OPCODE_FLOOR_PRECISE }, { "ROUND" , SC_OPCODE_ROUND }, { "ROUNDUP" , SC_OPCODE_ROUND_UP }, { "ROUNDDOWN" , SC_OPCODE_ROUND_DOWN }, { "TRUNC" , SC_OPCODE_TRUNC }, { "LOG" , SC_OPCODE_LOG }, { "POWER" , SC_OPCODE_POWER }, { "GCD" , SC_OPCODE_GCD }, { "LCM" , SC_OPCODE_LCM }, { "MOD" , SC_OPCODE_MOD }, { "SUMPRODUCT" , SC_OPCODE_SUM_PRODUCT }, { "SUMSQ" , SC_OPCODE_SUM_SQ }, { "SUMX2MY2" , SC_OPCODE_SUM_X2MY2 }, { "SUMX2PY2" , SC_OPCODE_SUM_X2DY2 }, { "SUMXMY2" , SC_OPCODE_SUM_XMY2 }, { "DATE" , SC_OPCODE_GET_DATE }, { "TIME" , SC_OPCODE_GET_TIME }, { "DAYS" , SC_OPCODE_GET_DIFF_DATE }, { "DAYS360" , SC_OPCODE_GET_DIFF_DATE_360 }, { "DATEDIF" , SC_OPCODE_GET_DATEDIF }, { "MIN" , SC_OPCODE_MIN }, { "MINA" , SC_OPCODE_MIN_A }, { "MAX" , SC_OPCODE_MAX }, { "MAXA" , SC_OPCODE_MAX_A }, { "SUM" , SC_OPCODE_SUM }, { "PRODUCT" , SC_OPCODE_PRODUCT }, { "AVERAGE" , SC_OPCODE_AVERAGE }, { "AVERAGEA" , SC_OPCODE_AVERAGE_A }, { "COUNT" , SC_OPCODE_COUNT }, { "COUNTA" , SC_OPCODE_COUNT_2 }, { "NPV" , SC_OPCODE_NPV }, { "IRR" , SC_OPCODE_IRR }, { "MIRR" , SC_OPCODE_MIRR }, { "ISPMT" , SC_OPCODE_ISPMT }, { "VAR" , SC_OPCODE_VAR }, { "VARA" , SC_OPCODE_VAR_A }, { "VARP" , SC_OPCODE_VAR_P }, { "VARPA" , SC_OPCODE_VAR_P_A }, { "VAR.P" , SC_OPCODE_VAR_P_MS }, { "VAR.S" , SC_OPCODE_VAR_S }, { "STDEV" , SC_OPCODE_ST_DEV }, { "STDEVA" , SC_OPCODE_ST_DEV_A }, { "STDEVP" , SC_OPCODE_ST_DEV_P }, { "STDEVPA" , SC_OPCODE_ST_DEV_P_A }, { "STDEV.P" , SC_OPCODE_ST_DEV_P_MS }, { "STDEV.S" , SC_OPCODE_ST_DEV_S }, { "B" , SC_OPCODE_B }, { "NORMDIST" , SC_OPCODE_NORM_DIST }, { "NORM.DIST" , SC_OPCODE_NORM_DIST_MS }, { "EXPONDIST" , SC_OPCODE_EXP_DIST }, { "EXPON.DIST" , SC_OPCODE_EXP_DIST_MS }, { "BINOMDIST" , SC_OPCODE_BINOM_DIST }, { "BINOM.DIST" , SC_OPCODE_BINOM_DIST_MS }, { "POISSON" , SC_OPCODE_POISSON_DIST }, { "POISSON.DIST" , SC_OPCODE_POISSON_DIST_MS }, { "COMBIN" , SC_OPCODE_COMBIN }, { "COMBINA" , SC_OPCODE_COMBIN_A }, { "PERMUT" , SC_OPCODE_PERMUT }, { "PERMUTATIONA" , SC_OPCODE_PERMUTATION_A }, { "PV" , SC_OPCODE_PV }, { "SYD" , SC_OPCODE_SYD }, { "DDB" , SC_OPCODE_DDB }, { "DB" , SC_OPCODE_DB }, { "VDB" , SC_OPCODE_VBD }, { "PDURATION" , SC_OPCODE_PDURATION }, { "SLN" , SC_OPCODE_SLN }, { "PMT" , SC_OPCODE_PMT }, { "COLUMNS" , SC_OPCODE_COLUMNS }, { "ROWS" , SC_OPCODE_ROWS }, { "SHEETS" , SC_OPCODE_SHEETS }, { "COLUMN" , SC_OPCODE_COLUMN }, { "ROW" , SC_OPCODE_ROW }, { "SHEET" , SC_OPCODE_SHEET }, { "ZGZ" , SC_OPCODE_RRI }, { "FV" , SC_OPCODE_FV }, { "NPER" , SC_OPCODE_NPER }, { "RATE" , SC_OPCODE_RATE }, { "IPMT" , SC_OPCODE_IPMT }, { "PPMT" , SC_OPCODE_PPMT }, { "CUMIPMT" , SC_OPCODE_CUM_IPMT }, { "CUMPRINC" , SC_OPCODE_CUM_PRINC }, { "EFFECTIVE" , SC_OPCODE_EFFECT }, { "NOMINAL" , SC_OPCODE_NOMINAL }, { "SUBTOTAL" , SC_OPCODE_SUB_TOTAL }, { "DSUM" , SC_OPCODE_DB_SUM }, { "DCOUNT" , SC_OPCODE_DB_COUNT }, { "DCOUNTA" , SC_OPCODE_DB_COUNT_2 }, { "DAVERAGE" , SC_OPCODE_DB_AVERAGE }, { "DGET" , SC_OPCODE_DB_GET }, { "DMAX" , SC_OPCODE_DB_MAX }, { "DMIN" , SC_OPCODE_DB_MIN }, { "DPRODUCT" , SC_OPCODE_DB_PRODUCT }, { "DSTDEV" , SC_OPCODE_DB_STD_DEV }, { "DSTDEVP" , SC_OPCODE_DB_STD_DEV_P }, { "DVAR" , SC_OPCODE_DB_VAR }, { "DVARP" , SC_OPCODE_DB_VAR_P }, { "INDIRECT" , SC_OPCODE_INDIRECT }, { "ADDRESS" , SC_OPCODE_ADDRESS }, { "MATCH" , SC_OPCODE_MATCH }, { "COUNTBLANK" , SC_OPCODE_COUNT_EMPTY_CELLS }, { "COUNTIF" , SC_OPCODE_COUNT_IF }, { "SUMIF" , SC_OPCODE_SUM_IF }, { "AVERAGEIF" , SC_OPCODE_AVERAGE_IF }, { "SUMIFS" , SC_OPCODE_SUM_IFS }, { "AVERAGEIFS" , SC_OPCODE_AVERAGE_IFS }, { "COUNTIFS" , SC_OPCODE_COUNT_IFS }, { "LOOKUP" , SC_OPCODE_LOOKUP }, { "VLOOKUP" , SC_OPCODE_V_LOOKUP }, { "HLOOKUP" , SC_OPCODE_H_LOOKUP }, { "MULTIRANGE" , SC_OPCODE_MULTI_AREA }, { "OFFSET" , SC_OPCODE_OFFSET }, { "INDEX" , SC_OPCODE_INDEX }, { "AREAS" , SC_OPCODE_AREAS }, { "DOLLAR" , SC_OPCODE_CURRENCY }, { "REPLACE" , SC_OPCODE_REPLACE }, { "FIXED" , SC_OPCODE_FIXED }, { "FIND" , SC_OPCODE_FIND }, { "EXACT" , SC_OPCODE_EXACT }, { "LEFT" , SC_OPCODE_LEFT }, { "RIGHT" , SC_OPCODE_RIGHT }, { "SEARCH" , SC_OPCODE_SEARCH }, { "MID" , SC_OPCODE_MID }, { "LENB" , SC_OPCODE_LENB }, { "RIGHTB" , SC_OPCODE_RIGHTB }, { "LEFTB" , SC_OPCODE_LEFTB }, { "REPLACEB" , SC_OPCODE_REPLACEB }, { "FINDB" , SC_OPCODE_FINDB }, { "SEARCHB" , SC_OPCODE_SEARCHB }, { "MIDB" , SC_OPCODE_MIDB }, { "TEXT" , SC_OPCODE_TEXT }, { "SUBSTITUTE" , SC_OPCODE_SUBSTITUTE }, { "REPT" , SC_OPCODE_REPT }, { "CONCATENATE" , SC_OPCODE_CONCAT }, { "CONCAT" , SC_OPCODE_CONCAT_MS }, { "TEXTJOIN" , SC_OPCODE_TEXTJOIN_MS }, { "IFS" , SC_OPCODE_IFS_MS }, { "SWITCH" , SC_OPCODE_SWITCH_MS }, { "MINIFS" , SC_OPCODE_MINIFS_MS }, { "MAXIFS" , SC_OPCODE_MAXIFS_MS }, { "MVALUE" , SC_OPCODE_MAT_VALUE }, { "MDETERM" , SC_OPCODE_MAT_DET }, { "MINVERSE" , SC_OPCODE_MAT_INV }, { "MMULT" , SC_OPCODE_MAT_MULT }, { "TRANSPOSE" , SC_OPCODE_MAT_TRANS }, { "MUNIT" , SC_OPCODE_MATRIX_UNIT }, { "GOALSEEK" , SC_OPCODE_BACK_SOLVER }, { "HYPGEOMDIST" , SC_OPCODE_HYP_GEOM_DIST }, { "HYPGEOM.DIST" , SC_OPCODE_HYP_GEOM_DIST_MS }, { "LOGNORMDIST" , SC_OPCODE_LOG_NORM_DIST }, { "LOGNORM.DIST" , SC_OPCODE_LOG_NORM_DIST_MS }, { "TDIST" , SC_OPCODE_T_DIST }, { "T.DIST.2T" , SC_OPCODE_T_DIST_2T }, { "T.DIST" , SC_OPCODE_T_DIST_MS }, { "T.DIST.RT" , SC_OPCODE_T_DIST_RT }, { "FDIST" , SC_OPCODE_F_DIST }, { "F.DIST" , SC_OPCODE_F_DIST_LT }, { "F.DIST.RT" , SC_OPCODE_F_DIST_RT }, { "CHIDIST" , SC_OPCODE_CHI_DIST }, { "CHISQ.DIST.RT" , SC_OPCODE_CHI_DIST_MS }, { "WEIBULL" , SC_OPCODE_WEIBULL }, { "WEIBULL.DIST" , SC_OPCODE_WEIBULL_MS }, { "NEGBINOMDIST" , SC_OPCODE_NEG_BINOM_VERT }, { "NEGBINOM.DIST" , SC_OPCODE_NEG_BINOM_DIST_MS }, { "CRITBINOM" , SC_OPCODE_CRIT_BINOM }, { "BINOM.INV" , SC_OPCODE_BINOM_INV }, { "KURT" , SC_OPCODE_KURT }, { "HARMEAN" , SC_OPCODE_HAR_MEAN }, { "GEOMEAN" , SC_OPCODE_GEO_MEAN }, { "STANDARDIZE" , SC_OPCODE_STANDARD }, { "AVEDEV" , SC_OPCODE_AVE_DEV }, { "SKEW" , SC_OPCODE_SKEW }, { "SKEWP" , SC_OPCODE_SKEWP }, { "DEVSQ" , SC_OPCODE_DEV_SQ }, { "MEDIAN" , SC_OPCODE_MEDIAN }, { "MODE" , SC_OPCODE_MODAL_VALUE }, { "MODE.SNGL" , SC_OPCODE_MODAL_VALUE_MS }, { "MODE.MULT" , SC_OPCODE_MODAL_VALUE_MULTI }, { "ZTEST" , SC_OPCODE_Z_TEST }, { "Z.TEST" , SC_OPCODE_Z_TEST_MS }, { "AGGREGATE" , SC_OPCODE_AGGREGATE }, { "TTEST" , SC_OPCODE_T_TEST }, { "T.TEST" , SC_OPCODE_T_TEST_MS }, { "RANK" , SC_OPCODE_RANK }, { "PERCENTILE" , SC_OPCODE_PERCENTILE }, { "PERCENTRANK" , SC_OPCODE_PERCENT_RANK }, { "PERCENTILE.INC" , SC_OPCODE_PERCENTILE_INC }, { "PERCENTRANK.INC" , SC_OPCODE_PERCENT_RANK_INC }, { "QUARTILE.INC" , SC_OPCODE_QUARTILE_INC }, { "RANK.EQ" , SC_OPCODE_RANK_EQ }, { "PERCENTILE.EXC" , SC_OPCODE_PERCENTILE_EXC }, { "PERCENTRANK.EXC" , SC_OPCODE_PERCENT_RANK_EXC }, { "QUARTILE.EXC" , SC_OPCODE_QUARTILE_EXC }, { "RANK.AVG" , SC_OPCODE_RANK_AVG }, { "LARGE" , SC_OPCODE_LARGE }, { "SMALL" , SC_OPCODE_SMALL }, { "FREQUENCY" , SC_OPCODE_FREQUENCY }, { "QUARTILE" , SC_OPCODE_QUARTILE }, { "NORMINV" , SC_OPCODE_NORM_INV }, { "NORM.INV" , SC_OPCODE_NORM_INV_MS }, { "CONFIDENCE" , SC_OPCODE_CONFIDENCE }, { "CONFIDENCE.NORM" , SC_OPCODE_CONFIDENCE_N }, { "CONFIDENCE.T" , SC_OPCODE_CONFIDENCE_T }, { "FTEST" , SC_OPCODE_F_TEST }, { "F.TEST" , SC_OPCODE_F_TEST_MS }, { "TRIMMEAN" , SC_OPCODE_TRIM_MEAN }, { "PROB" , SC_OPCODE_PROB }, { "CORREL" , SC_OPCODE_CORREL }, { "COVAR" , SC_OPCODE_COVAR }, { "COVARIANCE.P" , SC_OPCODE_COVARIANCE_P }, { "COVARIANCE.S" , SC_OPCODE_COVARIANCE_S }, { "PEARSON" , SC_OPCODE_PEARSON }, { "RSQ" , SC_OPCODE_RSQ }, { "STEYX" , SC_OPCODE_STEYX }, { "SLOPE" , SC_OPCODE_SLOPE }, { "INTERCEPT" , SC_OPCODE_INTERCEPT }, { "TREND" , SC_OPCODE_TREND }, { "GROWTH" , SC_OPCODE_GROWTH }, { "LINEST" , SC_OPCODE_LINEST }, { "LOGEST" , SC_OPCODE_LOGEST }, { "FORECAST" , SC_OPCODE_FORECAST }, { "FORECAST.ETS.ADD" , SC_OPCODE_FORECAST_ETS_ADD }, { "FORECAST.ETS.SEASONALITY" , SC_OPCODE_FORECAST_ETS_SEA }, { "FORECAST.ETS.MULT" , SC_OPCODE_FORECAST_ETS_MUL }, { "FORECAST.ETS.PI.ADD" , SC_OPCODE_FORECAST_ETS_PIA }, { "FORECAST.ETS.PI.MULT" , SC_OPCODE_FORECAST_ETS_PIM }, { "FORECAST.ETS.STAT.ADD" , SC_OPCODE_FORECAST_ETS_STA }, { "FORECAST.ETS.STAT.MULT" , SC_OPCODE_FORECAST_ETS_STM }, { "FORECAST.LINEAR" , SC_OPCODE_FORECAST_LIN }, { "CHIINV" , SC_OPCODE_CHI_INV }, { "CHISQ.INV.RT" , SC_OPCODE_CHI_INV_MS }, { "GAMMADIST" , SC_OPCODE_GAMMA_DIST }, { "GAMMA.DIST" , SC_OPCODE_GAMMA_DIST_MS }, { "GAMMAINV" , SC_OPCODE_GAMMA_INV }, { "GAMMA.INV" , SC_OPCODE_GAMMA_INV_MS }, { "TINV" , SC_OPCODE_T_INV }, { "T.INV.2T" , SC_OPCODE_T_INV_2T }, { "T.INV" , SC_OPCODE_T_INV_MS }, { "FINV" , SC_OPCODE_F_INV }, { "F.INV" , SC_OPCODE_F_INV_LT }, { "F.INV.RT" , SC_OPCODE_F_INV_RT }, { "CHITEST" , SC_OPCODE_CHI_TEST }, { "CHISQ.TEST" , SC_OPCODE_CHI_TEST_MS }, { "LOGINV" , SC_OPCODE_LOG_INV }, { "LOGNORM.INV" , SC_OPCODE_LOG_INV_MS }, { "TABLE" , SC_OPCODE_TABLE_OP }, { "BETADIST" , SC_OPCODE_BETA_DIST }, { "BETAINV" , SC_OPCODE_BETA_INV }, { "BETA.DIST" , SC_OPCODE_BETA_DIST_MS }, { "BETA.INV" , SC_OPCODE_BETA_INV_MS }, { "WEEKNUM" , SC_OPCODE_WEEK }, { "ISOWEEKNUM" , SC_OPCODE_ISOWEEKNUM }, { "WEEKNUM_OOO" , SC_OPCODE_WEEKNUM_OOO }, { "EASTERSUNDAY" , SC_OPCODE_EASTERSUNDAY }, { "WEEKDAY" , SC_OPCODE_GET_DAY_OF_WEEK }, { "NETWORKDAYS" , SC_OPCODE_NETWORKDAYS }, { "NETWORKDAYS.INTL" , SC_OPCODE_NETWORKDAYS_MS }, { "WORKDAY.INTL" , SC_OPCODE_WORKDAY_MS }, { "#NAME!" , SC_OPCODE_NO_NAME }, { "STYLE" , SC_OPCODE_STYLE }, { "DDE" , SC_OPCODE_DDE }, { "BASE" , SC_OPCODE_BASE }, { "DECIMAL" , SC_OPCODE_DECIMAL }, { "CONVERT_OOO" , SC_OPCODE_CONVERT_OOO }, { "ROMAN" , SC_OPCODE_ROMAN }, { "ARABIC" , SC_OPCODE_ARABIC }, { "HYPERLINK" , SC_OPCODE_HYPERLINK }, { "INFO" , SC_OPCODE_INFO }, { "BAHTTEXT" , SC_OPCODE_BAHTTEXT }, { "GETPIVOTDATA" , SC_OPCODE_GET_PIVOT_DATA }, { "EUROCONVERT" , SC_OPCODE_EUROCONVERT }, { "NUMBERVALUE" , SC_OPCODE_NUMBERVALUE }, { "GAMMA" , SC_OPCODE_GAMMA }, { "CHISQDIST" , SC_OPCODE_CHISQ_DIST }, { "CHISQ.DIST" , SC_OPCODE_CHISQ_DIST_MS }, { "CHISQ.INV" , SC_OPCODE_CHISQ_INV_MS }, { "CHISQINV" , SC_OPCODE_CHISQ_INV }, { "BITAND" , SC_OPCODE_BITAND }, { "BITOR" , SC_OPCODE_BITOR }, { "BITXOR" , SC_OPCODE_BITXOR }, { "BITRSHIFT" , SC_OPCODE_BITRSHIFT }, { "BITLSHIFT" , SC_OPCODE_BITLSHIFT }, { "#NULL!" , SC_OPCODE_ERROR_NULL }, { "#DIV/0!" , SC_OPCODE_ERROR_DIVZERO }, { "#VALUE!" , SC_OPCODE_ERROR_VALUE }, { "#REF!" , SC_OPCODE_ERROR_REF }, { "#NAME?" , SC_OPCODE_ERROR_NAME }, { "#NUM!" , SC_OPCODE_ERROR_NUM }, { "#N/A" , SC_OPCODE_ERROR_NA }, /* END defined ERROR.TYPE() values. */ { "FILTERXML" , SC_OPCODE_FILTERXML }, { "WEBSERVICE" , SC_OPCODE_WEBSERVICE }, { "COLOR" , SC_OPCODE_COLOR }, { "ERF.PRECISE" , SC_OPCODE_ERF_MS }, { "ERFC.PRECISE" , SC_OPCODE_ERFC_MS }, { "ENCODEURL" , SC_OPCODE_ENCODEURL }, { "RAWSUBTRACT" , SC_OPCODE_RAWSUBTRACT }, { "ROUNDSIG" , SC_OPCODE_ROUNDSIG }, { "REGEX" , SC_OPCODE_REGEX }, { "FOURIER", SC_OPCODE_FOURIER }, { "RAND.NV" , SC_OPCODE_RANDOM_NV }, { "RANDBETWEEN.NV" , SC_OPCODE_RANDBETWEEN_NV }, { nullptr, -1 } }; /** Function names that can be localized if [en-US]. Same names should be used in RID_STRLIST_FUNCTION_NAMES_ENGLISH above. Names can be changed, the change has to be mentioned in the release notes, i.e. https://wiki.documentfoundation.org/ReleaseNotes/... */ const std::pair RID_STRLIST_FUNCTION_NAMES[] = { { NC_("RID_STRLIST_FUNCTION_NAMES", "IF") , SC_OPCODE_IF }, { NC_("RID_STRLIST_FUNCTION_NAMES", "IFERROR") , SC_OPCODE_IF_ERROR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "IFNA") , SC_OPCODE_IF_NA }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CHOOSE") , SC_OPCODE_CHOOSE }, /* L10n: preserve the leading '#' hash character in translations. */ { NC_("RID_STRLIST_FUNCTION_NAMES", "#All") , SC_OPCODE_TABLE_REF_ITEM_ALL }, /* L10n: preserve the leading '#' hash character in translations. */ { NC_("RID_STRLIST_FUNCTION_NAMES", "#Headers") , SC_OPCODE_TABLE_REF_ITEM_HEADERS }, /* L10n: preserve the leading '#' hash character in translations. */ { NC_("RID_STRLIST_FUNCTION_NAMES", "#Data") , SC_OPCODE_TABLE_REF_ITEM_DATA }, /* L10n: preserve the leading '#' hash character in translations. */ { NC_("RID_STRLIST_FUNCTION_NAMES", "#Totals") , SC_OPCODE_TABLE_REF_ITEM_TOTALS }, /* L10n: preserve the leading '#' hash character in translations. */ { NC_("RID_STRLIST_FUNCTION_NAMES", "#This Row") , SC_OPCODE_TABLE_REF_ITEM_THIS_ROW }, { NC_("RID_STRLIST_FUNCTION_NAMES", "AND") , SC_OPCODE_AND }, { NC_("RID_STRLIST_FUNCTION_NAMES", "OR") , SC_OPCODE_OR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "XOR") , SC_OPCODE_XOR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NOT") , SC_OPCODE_NOT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NEG") , SC_OPCODE_NEG }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PI") , SC_OPCODE_PI }, // ??? { NC_("RID_STRLIST_FUNCTION_NAMES", "RAND") , SC_OPCODE_RANDOM }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TRUE") , SC_OPCODE_TRUE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FALSE") , SC_OPCODE_FALSE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TODAY") , SC_OPCODE_GET_ACT_DATE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NOW") , SC_OPCODE_GET_ACT_TIME }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NA") , SC_OPCODE_NO_VALUE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CURRENT") , SC_OPCODE_CURRENT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DEGREES") , SC_OPCODE_DEG }, { NC_("RID_STRLIST_FUNCTION_NAMES", "RADIANS") , SC_OPCODE_RAD }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SIN") , SC_OPCODE_SIN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COS") , SC_OPCODE_COS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TAN") , SC_OPCODE_TAN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COT") , SC_OPCODE_COT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ASIN") , SC_OPCODE_ARC_SIN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ACOS") , SC_OPCODE_ARC_COS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ATAN") , SC_OPCODE_ARC_TAN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ACOT") , SC_OPCODE_ARC_COT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SINH") , SC_OPCODE_SIN_HYP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COSH") , SC_OPCODE_COS_HYP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TANH") , SC_OPCODE_TAN_HYP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COTH") , SC_OPCODE_COT_HYP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ASINH") , SC_OPCODE_ARC_SIN_HYP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ACOSH") , SC_OPCODE_ARC_COS_HYP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ATANH") , SC_OPCODE_ARC_TAN_HYP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ACOTH") , SC_OPCODE_ARC_COT_HYP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CSC") , SC_OPCODE_COSECANT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SEC") , SC_OPCODE_SECANT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CSCH") , SC_OPCODE_COSECANT_HYP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SECH") , SC_OPCODE_SECANT_HYP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "EXP") , SC_OPCODE_EXP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LN") , SC_OPCODE_LN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SQRT") , SC_OPCODE_SQRT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FACT") , SC_OPCODE_FACT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "YEAR") , SC_OPCODE_GET_YEAR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MONTH") , SC_OPCODE_GET_MONTH }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DAY") , SC_OPCODE_GET_DAY }, { NC_("RID_STRLIST_FUNCTION_NAMES", "HOUR") , SC_OPCODE_GET_HOUR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MINUTE") , SC_OPCODE_GET_MIN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SECOND") , SC_OPCODE_GET_SEC }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SIGN") , SC_OPCODE_PLUS_MINUS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ABS") , SC_OPCODE_ABS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "INT") , SC_OPCODE_INT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PHI") , SC_OPCODE_PHI }, { NC_("RID_STRLIST_FUNCTION_NAMES", "GAUSS") , SC_OPCODE_GAUSS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISBLANK") , SC_OPCODE_IS_EMPTY }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISTEXT") , SC_OPCODE_IS_STRING }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISNONTEXT") , SC_OPCODE_IS_NON_STRING }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISLOGICAL") , SC_OPCODE_IS_LOGICAL }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TYPE") , SC_OPCODE_TYPE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CELL") , SC_OPCODE_CELL }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISREF") , SC_OPCODE_IS_REF }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISNUMBER") , SC_OPCODE_IS_VALUE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISFORMULA") , SC_OPCODE_IS_FORMULA }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISNA") , SC_OPCODE_IS_NV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISERR") , SC_OPCODE_IS_ERR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISERROR") , SC_OPCODE_IS_ERROR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISEVEN") , SC_OPCODE_IS_EVEN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISODD") , SC_OPCODE_IS_ODD }, { NC_("RID_STRLIST_FUNCTION_NAMES", "N") , SC_OPCODE_N }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DATEVALUE") , SC_OPCODE_GET_DATE_VALUE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TIMEVALUE") , SC_OPCODE_GET_TIME_VALUE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CODE") , SC_OPCODE_CODE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TRIM") , SC_OPCODE_TRIM }, { NC_("RID_STRLIST_FUNCTION_NAMES", "UPPER") , SC_OPCODE_UPPER }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PROPER") , SC_OPCODE_PROPER }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LOWER") , SC_OPCODE_LOWER }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LEN") , SC_OPCODE_LEN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "T") , SC_OPCODE_T }, { NC_("RID_STRLIST_FUNCTION_NAMES", "VALUE") , SC_OPCODE_VALUE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CLEAN") , SC_OPCODE_CLEAN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CHAR") , SC_OPCODE_CHAR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "JIS") , SC_OPCODE_JIS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ASC") , SC_OPCODE_ASC }, { NC_("RID_STRLIST_FUNCTION_NAMES", "UNICODE") , SC_OPCODE_UNICODE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "UNICHAR") , SC_OPCODE_UNICHAR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LOG10") , SC_OPCODE_LOG10 }, { NC_("RID_STRLIST_FUNCTION_NAMES", "EVEN") , SC_OPCODE_EVEN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ODD") , SC_OPCODE_ODD }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NORMSDIST") , SC_OPCODE_STD_NORM_DIST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NORM.S.DIST") , SC_OPCODE_STD_NORM_DIST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FISHER") , SC_OPCODE_FISHER }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FISHERINV") , SC_OPCODE_FISHER_INV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NORMSINV") , SC_OPCODE_S_NORM_INV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NORM.S.INV") , SC_OPCODE_S_NORM_INV_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMALN") , SC_OPCODE_GAMMA_LN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMALN.PRECISE") , SC_OPCODE_GAMMA_LN_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ERRORTYPE") , SC_OPCODE_ERROR_TYPE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ERROR.TYPE") , SC_OPCODE_ERROR_TYPE_ODF }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FORMULA") , SC_OPCODE_FORMULA }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ARABIC") , SC_OPCODE_ARABIC }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ATAN2") , SC_OPCODE_ARC_TAN_2 }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CEILING.MATH") , SC_OPCODE_CEIL_MATH }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CEILING") , SC_OPCODE_CEIL }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CEILING.XCL") , SC_OPCODE_CEIL_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CEILING.PRECISE") , SC_OPCODE_CEIL_PRECISE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISO.CEILING") , SC_OPCODE_CEIL_ISO }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FLOOR") , SC_OPCODE_FLOOR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FLOOR.XCL") , SC_OPCODE_FLOOR_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FLOOR.MATH") , SC_OPCODE_FLOOR_MATH }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FLOOR.PRECISE") , SC_OPCODE_FLOOR_PRECISE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ROUND") , SC_OPCODE_ROUND }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ROUNDUP") , SC_OPCODE_ROUND_UP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ROUNDDOWN") , SC_OPCODE_ROUND_DOWN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TRUNC") , SC_OPCODE_TRUNC }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LOG") , SC_OPCODE_LOG }, { NC_("RID_STRLIST_FUNCTION_NAMES", "POWER") , SC_OPCODE_POWER }, { NC_("RID_STRLIST_FUNCTION_NAMES", "GCD") , SC_OPCODE_GCD }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LCM") , SC_OPCODE_LCM }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MOD") , SC_OPCODE_MOD }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SUMPRODUCT") , SC_OPCODE_SUM_PRODUCT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SUMSQ") , SC_OPCODE_SUM_SQ }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SUMX2MY2") , SC_OPCODE_SUM_X2MY2 }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SUMX2PY2") , SC_OPCODE_SUM_X2DY2 }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SUMXMY2") , SC_OPCODE_SUM_XMY2 }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DATE") , SC_OPCODE_GET_DATE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TIME") , SC_OPCODE_GET_TIME }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DAYS") , SC_OPCODE_GET_DIFF_DATE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DAYS360") , SC_OPCODE_GET_DIFF_DATE_360 }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DATEDIF") , SC_OPCODE_GET_DATEDIF }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MIN") , SC_OPCODE_MIN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MINA") , SC_OPCODE_MIN_A }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MAX") , SC_OPCODE_MAX }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MAXA") , SC_OPCODE_MAX_A }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SUM") , SC_OPCODE_SUM }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PRODUCT") , SC_OPCODE_PRODUCT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "AVERAGE") , SC_OPCODE_AVERAGE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "AVERAGEA") , SC_OPCODE_AVERAGE_A }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COUNT") , SC_OPCODE_COUNT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COUNTA") , SC_OPCODE_COUNT_2 }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NPV") , SC_OPCODE_NPV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "IRR") , SC_OPCODE_IRR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MIRR") , SC_OPCODE_MIRR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISPMT") , SC_OPCODE_ISPMT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "VAR") , SC_OPCODE_VAR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "VARA") , SC_OPCODE_VAR_A }, { NC_("RID_STRLIST_FUNCTION_NAMES", "VARP") , SC_OPCODE_VAR_P }, { NC_("RID_STRLIST_FUNCTION_NAMES", "VARPA") , SC_OPCODE_VAR_P_A }, { NC_("RID_STRLIST_FUNCTION_NAMES", "VAR.P") , SC_OPCODE_VAR_P_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "VAR.S") , SC_OPCODE_VAR_S }, { NC_("RID_STRLIST_FUNCTION_NAMES", "STDEV") , SC_OPCODE_ST_DEV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "STDEVA") , SC_OPCODE_ST_DEV_A }, { NC_("RID_STRLIST_FUNCTION_NAMES", "STDEVP") , SC_OPCODE_ST_DEV_P }, { NC_("RID_STRLIST_FUNCTION_NAMES", "STDEVPA") , SC_OPCODE_ST_DEV_P_A }, { NC_("RID_STRLIST_FUNCTION_NAMES", "STDEV.P") , SC_OPCODE_ST_DEV_P_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "STDEV.S") , SC_OPCODE_ST_DEV_S }, { NC_("RID_STRLIST_FUNCTION_NAMES", "B") , SC_OPCODE_B }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NORMDIST") , SC_OPCODE_NORM_DIST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NORM.DIST") , SC_OPCODE_NORM_DIST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "EXPONDIST") , SC_OPCODE_EXP_DIST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "EXPON.DIST") , SC_OPCODE_EXP_DIST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "BINOMDIST") , SC_OPCODE_BINOM_DIST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "BINOM.DIST") , SC_OPCODE_BINOM_DIST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "POISSON") , SC_OPCODE_POISSON_DIST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "POISSON.DIST") , SC_OPCODE_POISSON_DIST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COMBIN") , SC_OPCODE_COMBIN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COMBINA") , SC_OPCODE_COMBIN_A }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PERMUT") , SC_OPCODE_PERMUT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PERMUTATIONA") , SC_OPCODE_PERMUTATION_A }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PV") , SC_OPCODE_PV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SYD") , SC_OPCODE_SYD }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DDB") , SC_OPCODE_DDB }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DB") , SC_OPCODE_DB }, { NC_("RID_STRLIST_FUNCTION_NAMES", "VDB") , SC_OPCODE_VBD }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PDURATION") , SC_OPCODE_PDURATION }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SLN") , SC_OPCODE_SLN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PMT") , SC_OPCODE_PMT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COLUMNS") , SC_OPCODE_COLUMNS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ROWS") , SC_OPCODE_ROWS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SHEETS") , SC_OPCODE_SHEETS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COLUMN") , SC_OPCODE_COLUMN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ROW") , SC_OPCODE_ROW }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SHEET") , SC_OPCODE_SHEET }, { NC_("RID_STRLIST_FUNCTION_NAMES", "RRI") , SC_OPCODE_RRI }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FV") , SC_OPCODE_FV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NPER") , SC_OPCODE_NPER }, { NC_("RID_STRLIST_FUNCTION_NAMES", "RATE") , SC_OPCODE_RATE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "IPMT") , SC_OPCODE_IPMT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PPMT") , SC_OPCODE_PPMT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CUMIPMT") , SC_OPCODE_CUM_IPMT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CUMPRINC") , SC_OPCODE_CUM_PRINC }, { NC_("RID_STRLIST_FUNCTION_NAMES", "EFFECT") , SC_OPCODE_EFFECT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NOMINAL") , SC_OPCODE_NOMINAL }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SUBTOTAL") , SC_OPCODE_SUB_TOTAL }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DSUM") , SC_OPCODE_DB_SUM }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DCOUNT") , SC_OPCODE_DB_COUNT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DCOUNTA") , SC_OPCODE_DB_COUNT_2 }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DAVERAGE") , SC_OPCODE_DB_AVERAGE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DGET") , SC_OPCODE_DB_GET }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DMAX") , SC_OPCODE_DB_MAX }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DMIN") , SC_OPCODE_DB_MIN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DPRODUCT") , SC_OPCODE_DB_PRODUCT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DSTDEV") , SC_OPCODE_DB_STD_DEV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DSTDEVP") , SC_OPCODE_DB_STD_DEV_P }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DVAR") , SC_OPCODE_DB_VAR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DVARP") , SC_OPCODE_DB_VAR_P }, { NC_("RID_STRLIST_FUNCTION_NAMES", "INDIRECT") , SC_OPCODE_INDIRECT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ADDRESS") , SC_OPCODE_ADDRESS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MATCH") , SC_OPCODE_MATCH }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COUNTBLANK") , SC_OPCODE_COUNT_EMPTY_CELLS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COUNTIF") , SC_OPCODE_COUNT_IF }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SUMIF") , SC_OPCODE_SUM_IF }, { NC_("RID_STRLIST_FUNCTION_NAMES", "AVERAGEIF") , SC_OPCODE_AVERAGE_IF }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SUMIFS") , SC_OPCODE_SUM_IFS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "AVERAGEIFS") , SC_OPCODE_AVERAGE_IFS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COUNTIFS") , SC_OPCODE_COUNT_IFS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LOOKUP") , SC_OPCODE_LOOKUP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "VLOOKUP") , SC_OPCODE_V_LOOKUP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "HLOOKUP") , SC_OPCODE_H_LOOKUP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MULTIRANGE") , SC_OPCODE_MULTI_AREA }, // legacy for range list (union) { NC_("RID_STRLIST_FUNCTION_NAMES", "OFFSET") , SC_OPCODE_OFFSET }, { NC_("RID_STRLIST_FUNCTION_NAMES", "INDEX") , SC_OPCODE_INDEX }, // ?? first character = I ?? { NC_("RID_STRLIST_FUNCTION_NAMES", "AREAS") , SC_OPCODE_AREAS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DOLLAR") , SC_OPCODE_CURRENCY }, { NC_("RID_STRLIST_FUNCTION_NAMES", "REPLACE") , SC_OPCODE_REPLACE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FIXED") , SC_OPCODE_FIXED }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FIND") , SC_OPCODE_FIND }, { NC_("RID_STRLIST_FUNCTION_NAMES", "EXACT") , SC_OPCODE_EXACT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LEFT") , SC_OPCODE_LEFT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "RIGHT") , SC_OPCODE_RIGHT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SEARCH") , SC_OPCODE_SEARCH }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MID") , SC_OPCODE_MID }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LENB") , SC_OPCODE_LENB }, { NC_("RID_STRLIST_FUNCTION_NAMES", "RIGHTB") , SC_OPCODE_RIGHTB }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LEFTB") , SC_OPCODE_LEFTB }, { NC_("RID_STRLIST_FUNCTION_NAMES", "REPLACEB") , SC_OPCODE_REPLACEB }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MIDB") , SC_OPCODE_MIDB }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TEXT") , SC_OPCODE_TEXT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SUBSTITUTE") , SC_OPCODE_SUBSTITUTE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "REPT") , SC_OPCODE_REPT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CONCATENATE") , SC_OPCODE_CONCAT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CONCAT") , SC_OPCODE_CONCAT_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TEXTJOIN") , SC_OPCODE_TEXTJOIN_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "IFS") , SC_OPCODE_IFS_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SWITCH") , SC_OPCODE_SWITCH_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MINIFS") , SC_OPCODE_MINIFS_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MAXIFS") , SC_OPCODE_MAXIFS_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MVALUE") , SC_OPCODE_MAT_VALUE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MDETERM") , SC_OPCODE_MAT_DET }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MINVERSE") , SC_OPCODE_MAT_INV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MMULT") , SC_OPCODE_MAT_MULT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TRANSPOSE") , SC_OPCODE_MAT_TRANS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MUNIT") , SC_OPCODE_MATRIX_UNIT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "GOALSEEK") , SC_OPCODE_BACK_SOLVER }, { NC_("RID_STRLIST_FUNCTION_NAMES", "HYPGEOMDIST") , SC_OPCODE_HYP_GEOM_DIST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "HYPGEOM.DIST") , SC_OPCODE_HYP_GEOM_DIST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LOGNORMDIST") , SC_OPCODE_LOG_NORM_DIST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LOGNORM.DIST") , SC_OPCODE_LOG_NORM_DIST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TDIST") , SC_OPCODE_T_DIST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "T.DIST.2T") , SC_OPCODE_T_DIST_2T }, { NC_("RID_STRLIST_FUNCTION_NAMES", "T.DIST") , SC_OPCODE_T_DIST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "T.DIST.RT") , SC_OPCODE_T_DIST_RT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FDIST") , SC_OPCODE_F_DIST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "F.DIST") , SC_OPCODE_F_DIST_LT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "F.DIST.RT") , SC_OPCODE_F_DIST_RT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CHIDIST") , SC_OPCODE_CHI_DIST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.DIST.RT") , SC_OPCODE_CHI_DIST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "WEIBULL") , SC_OPCODE_WEIBULL }, { NC_("RID_STRLIST_FUNCTION_NAMES", "WEIBULL.DIST") , SC_OPCODE_WEIBULL_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NEGBINOMDIST") , SC_OPCODE_NEG_BINOM_VERT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NEGBINOM.DIST") , SC_OPCODE_NEG_BINOM_DIST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CRITBINOM") , SC_OPCODE_CRIT_BINOM }, { NC_("RID_STRLIST_FUNCTION_NAMES", "BINOM.INV") , SC_OPCODE_BINOM_INV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "KURT") , SC_OPCODE_KURT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "HARMEAN") , SC_OPCODE_HAR_MEAN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "GEOMEAN") , SC_OPCODE_GEO_MEAN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "STANDARDIZE") , SC_OPCODE_STANDARD }, { NC_("RID_STRLIST_FUNCTION_NAMES", "AVEDEV") , SC_OPCODE_AVE_DEV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SKEW") , SC_OPCODE_SKEW }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SKEWP") , SC_OPCODE_SKEWP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DEVSQ") , SC_OPCODE_DEV_SQ }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MEDIAN") , SC_OPCODE_MEDIAN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MODE") , SC_OPCODE_MODAL_VALUE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MODE.SNGL") , SC_OPCODE_MODAL_VALUE_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MODE.MULT") , SC_OPCODE_MODAL_VALUE_MULTI }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ZTEST") , SC_OPCODE_Z_TEST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "Z.TEST") , SC_OPCODE_Z_TEST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "AGGREGATE") , SC_OPCODE_AGGREGATE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TTEST") , SC_OPCODE_T_TEST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "T.TEST") , SC_OPCODE_T_TEST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "RANK") , SC_OPCODE_RANK }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTILE") , SC_OPCODE_PERCENTILE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTRANK") , SC_OPCODE_PERCENT_RANK }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTILE.INC") , SC_OPCODE_PERCENTILE_INC }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTRANK.INC") , SC_OPCODE_PERCENT_RANK_INC }, { NC_("RID_STRLIST_FUNCTION_NAMES", "QUARTILE.INC") , SC_OPCODE_QUARTILE_INC }, { NC_("RID_STRLIST_FUNCTION_NAMES", "RANK.EQ") , SC_OPCODE_RANK_EQ }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTILE.EXC") , SC_OPCODE_PERCENTILE_EXC }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PERCENTRANK.EXC") , SC_OPCODE_PERCENT_RANK_EXC }, { NC_("RID_STRLIST_FUNCTION_NAMES", "QUARTILE.EXC") , SC_OPCODE_QUARTILE_EXC }, { NC_("RID_STRLIST_FUNCTION_NAMES", "RANK.AVG") , SC_OPCODE_RANK_AVG }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LARGE") , SC_OPCODE_LARGE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SMALL") , SC_OPCODE_SMALL }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FREQUENCY") , SC_OPCODE_FREQUENCY }, { NC_("RID_STRLIST_FUNCTION_NAMES", "QUARTILE") , SC_OPCODE_QUARTILE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NORMINV") , SC_OPCODE_NORM_INV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NORM.INV") , SC_OPCODE_NORM_INV_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CONFIDENCE") , SC_OPCODE_CONFIDENCE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CONFIDENCE.NORM") , SC_OPCODE_CONFIDENCE_N }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CONFIDENCE.T") , SC_OPCODE_CONFIDENCE_T }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FTEST") , SC_OPCODE_F_TEST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "F.TEST") , SC_OPCODE_F_TEST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TRIMMEAN") , SC_OPCODE_TRIM_MEAN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PROB") , SC_OPCODE_PROB }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CORREL") , SC_OPCODE_CORREL }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COVAR") , SC_OPCODE_COVAR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COVARIANCE.P") , SC_OPCODE_COVARIANCE_P }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COVARIANCE.S") , SC_OPCODE_COVARIANCE_S }, { NC_("RID_STRLIST_FUNCTION_NAMES", "PEARSON") , SC_OPCODE_PEARSON }, { NC_("RID_STRLIST_FUNCTION_NAMES", "RSQ") , SC_OPCODE_RSQ }, { NC_("RID_STRLIST_FUNCTION_NAMES", "STEYX") , SC_OPCODE_STEYX }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SLOPE") , SC_OPCODE_SLOPE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "INTERCEPT") , SC_OPCODE_INTERCEPT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TREND") , SC_OPCODE_TREND }, { NC_("RID_STRLIST_FUNCTION_NAMES", "GROWTH") , SC_OPCODE_GROWTH }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LINEST") , SC_OPCODE_LINEST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LOGEST") , SC_OPCODE_LOGEST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST") , SC_OPCODE_FORECAST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.ADD") , SC_OPCODE_FORECAST_ETS_ADD }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.SEASONALITY") , SC_OPCODE_FORECAST_ETS_SEA }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.MULT") , SC_OPCODE_FORECAST_ETS_MUL }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.PI.ADD") , SC_OPCODE_FORECAST_ETS_PIA }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.PI.MULT") , SC_OPCODE_FORECAST_ETS_PIM }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.STAT.ADD") , SC_OPCODE_FORECAST_ETS_STA }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.ETS.STAT.MULT") , SC_OPCODE_FORECAST_ETS_STM }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FORECAST.LINEAR") , SC_OPCODE_FORECAST_LIN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CHIINV") , SC_OPCODE_CHI_INV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.INV.RT") , SC_OPCODE_CHI_INV_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMADIST") , SC_OPCODE_GAMMA_DIST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMA.DIST") , SC_OPCODE_GAMMA_DIST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMAINV") , SC_OPCODE_GAMMA_INV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMA.INV") , SC_OPCODE_GAMMA_INV_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "TINV") , SC_OPCODE_T_INV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "T.INV.2T") , SC_OPCODE_T_INV_2T }, { NC_("RID_STRLIST_FUNCTION_NAMES", "T.INV") , SC_OPCODE_T_INV_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FINV") , SC_OPCODE_F_INV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "F.INV") , SC_OPCODE_F_INV_LT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "F.INV.RT") , SC_OPCODE_F_INV_RT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CHITEST") , SC_OPCODE_CHI_TEST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.TEST") , SC_OPCODE_CHI_TEST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LOGINV") , SC_OPCODE_LOG_INV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "LOGNORM.INV") , SC_OPCODE_LOG_INV_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "MULTIPLE.OPERATIONS") , SC_OPCODE_TABLE_OP }, { NC_("RID_STRLIST_FUNCTION_NAMES", "BETADIST") , SC_OPCODE_BETA_DIST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "BETAINV") , SC_OPCODE_BETA_INV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "BETA.DIST") , SC_OPCODE_BETA_DIST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "BETA.INV") , SC_OPCODE_BETA_INV_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "WEEKNUM") , SC_OPCODE_WEEK }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ISOWEEKNUM") , SC_OPCODE_ISOWEEKNUM }, { NC_("RID_STRLIST_FUNCTION_NAMES", "WEEKNUM_OOO") , SC_OPCODE_WEEKNUM_OOO }, { NC_("RID_STRLIST_FUNCTION_NAMES", "EASTERSUNDAY") , SC_OPCODE_EASTERSUNDAY }, { NC_("RID_STRLIST_FUNCTION_NAMES", "WEEKDAY") , SC_OPCODE_GET_DAY_OF_WEEK }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NETWORKDAYS") , SC_OPCODE_NETWORKDAYS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NETWORKDAYS.INTL") , SC_OPCODE_NETWORKDAYS_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "WORKDAY.INTL") , SC_OPCODE_WORKDAY_MS }, /* L10n: preserve the leading '#' hash character in translations. */ { NC_("RID_STRLIST_FUNCTION_NAMES", "#NAME!") , SC_OPCODE_NO_NAME }, { NC_("RID_STRLIST_FUNCTION_NAMES", "STYLE") , SC_OPCODE_STYLE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DDE") , SC_OPCODE_DDE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "BASE") , SC_OPCODE_BASE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "DECIMAL") , SC_OPCODE_DECIMAL }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CONVERT_OOO") , SC_OPCODE_CONVERT_OOO }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ROMAN") , SC_OPCODE_ROMAN }, { NC_("RID_STRLIST_FUNCTION_NAMES", "HYPERLINK") , SC_OPCODE_HYPERLINK }, { NC_("RID_STRLIST_FUNCTION_NAMES", "INFO") , SC_OPCODE_INFO }, { NC_("RID_STRLIST_FUNCTION_NAMES", "BAHTTEXT") , SC_OPCODE_BAHTTEXT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "GETPIVOTDATA") , SC_OPCODE_GET_PIVOT_DATA }, { NC_("RID_STRLIST_FUNCTION_NAMES", "EUROCONVERT") , SC_OPCODE_EUROCONVERT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "NUMBERVALUE") , SC_OPCODE_NUMBERVALUE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "GAMMA") , SC_OPCODE_GAMMA }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQDIST") , SC_OPCODE_CHISQ_DIST }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.DIST") , SC_OPCODE_CHISQ_DIST_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQINV") , SC_OPCODE_CHISQ_INV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "CHISQ.INV") , SC_OPCODE_CHISQ_INV_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "BITAND") , SC_OPCODE_BITAND }, { NC_("RID_STRLIST_FUNCTION_NAMES", "BITOR") , SC_OPCODE_BITOR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "BITXOR") , SC_OPCODE_BITXOR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "BITRSHIFT") , SC_OPCODE_BITRSHIFT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "BITLSHIFT") , SC_OPCODE_BITLSHIFT }, /* BEGIN defined ERROR.TYPE() values. */ /* ERROR.TYPE( #NULL! ) == 1 */ /* L10n: preserve the leading '#' hash character in translations. */ { NC_("RID_STRLIST_FUNCTION_NAMES", "#NULL!") , SC_OPCODE_ERROR_NULL }, /* ERROR.TYPE( #DIV/0! ) == 2 */ /* L10n: preserve the leading '#' hash character in translations. */ { NC_("RID_STRLIST_FUNCTION_NAMES", "#DIV/0!") , SC_OPCODE_ERROR_DIVZERO }, /* ERROR.TYPE( #VALUE! ) == 3 */ /* L10n: preserve the leading '#' hash character in translations. */ { NC_("RID_STRLIST_FUNCTION_NAMES", "#VALUE!") , SC_OPCODE_ERROR_VALUE }, /* ERROR.TYPE( #REF! ) == 4 */ /* L10n: preserve the leading '#' hash character in translations. */ { NC_("RID_STRLIST_FUNCTION_NAMES", "#REF!") , SC_OPCODE_ERROR_REF }, /* ERROR.TYPE( #NAME! ) == 5 */ /* L10n: preserve the leading '#' hash character in translations. */ { NC_("RID_STRLIST_FUNCTION_NAMES", "#NAME?") , SC_OPCODE_ERROR_NAME }, /* ERROR.TYPE( #NUM! ) == 6 */ /* L10n: preserve the leading '#' hash character in translations. */ { NC_("RID_STRLIST_FUNCTION_NAMES", "#NUM!") , SC_OPCODE_ERROR_NUM }, /* ERROR.TYPE( #N/A ) == 7 */ /* L10n: preserve the leading '#' hash character in translations. */ { NC_("RID_STRLIST_FUNCTION_NAMES", "#N/A") , SC_OPCODE_ERROR_NA }, /* END defined ERROR.TYPE() values. */ { NC_("RID_STRLIST_FUNCTION_NAMES", "FILTERXML") , SC_OPCODE_FILTERXML }, { NC_("RID_STRLIST_FUNCTION_NAMES", "COLOR") , SC_OPCODE_COLOR }, { NC_("RID_STRLIST_FUNCTION_NAMES", "WEBSERVICE") , SC_OPCODE_WEBSERVICE }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ERF.PRECISE") , SC_OPCODE_ERF_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ERFC.PRECISE") , SC_OPCODE_ERFC_MS }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ENCODEURL") , SC_OPCODE_ENCODEURL }, { NC_("RID_STRLIST_FUNCTION_NAMES", "RAWSUBTRACT") , SC_OPCODE_RAWSUBTRACT }, { NC_("RID_STRLIST_FUNCTION_NAMES", "ROUNDSIG") , SC_OPCODE_ROUNDSIG }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FINDB") , SC_OPCODE_FINDB }, { NC_("RID_STRLIST_FUNCTION_NAMES", "SEARCHB") , SC_OPCODE_SEARCHB }, { NC_("RID_STRLIST_FUNCTION_NAMES", "REGEX") , SC_OPCODE_REGEX }, { NC_("RID_STRLIST_FUNCTION_NAMES", "FOURIER"), SC_OPCODE_FOURIER }, { NC_("RID_STRLIST_FUNCTION_NAMES", "RAND.NV"), SC_OPCODE_RANDOM_NV }, { NC_("RID_STRLIST_FUNCTION_NAMES", "RANDBETWEEN.NV"), SC_OPCODE_RANDBETWEEN_NV }, { nullptr, -1 } }; const std::pair RID_STRLIST_FUNCTION_NAMES_SYMBOLS[] = { { "(" , SC_OPCODE_OPEN }, { ")" , SC_OPCODE_CLOSE }, { "[" , SC_OPCODE_TABLE_REF_OPEN }, { "]" , SC_OPCODE_TABLE_REF_CLOSE }, { "{" , SC_OPCODE_ARRAY_OPEN }, { "}" , SC_OPCODE_ARRAY_CLOSE }, { "|" , SC_OPCODE_ARRAY_ROW_SEP }, { ";" , SC_OPCODE_ARRAY_COL_SEP }, { ";" , SC_OPCODE_SEP }, { "%" , SC_OPCODE_PERCENT_SIGN }, { "+" , SC_OPCODE_ADD }, { "-" , SC_OPCODE_SUB }, { "*" , SC_OPCODE_MUL }, { "/" , SC_OPCODE_DIV }, { "&" , SC_OPCODE_AMPERSAND }, { "^" , SC_OPCODE_POW }, { "=" , SC_OPCODE_EQUAL }, { "<>" , SC_OPCODE_NOT_EQUAL }, { "<" , SC_OPCODE_LESS }, { ">" , SC_OPCODE_GREATER }, { "<=" , SC_OPCODE_LESS_EQUAL }, { ">=" , SC_OPCODE_GREATER_EQUAL }, { "!" , SC_OPCODE_INTERSECT }, { "~" , SC_OPCODE_UNION }, { ":" , SC_OPCODE_RANGE }, { "-" , SC_OPCODE_NEG_SUB }, { nullptr, -1 } }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */