All Projects → toolgood → ToolGood.Algorithm

toolgood / ToolGood.Algorithm

Licence: Apache-2.0 license
Support four arithmetic operations, Excel formulas, and support custom parameters. 支持四则运算、Excel公式语法,并支持自定义参数。

Programming Languages

C#
18002 projects
java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to ToolGood.Algorithm

xlsx-calc
javascript nodejs excel formula parser
Stars: ✭ 83 (+7.79%)
Mutual labels:  formula, excel
Excelize
Golang library for reading and writing Microsoft Excel™ (XLSX) files.
Stars: ✭ 10,286 (+13258.44%)
Mutual labels:  formula, excel
Excel2Object
excel convert to .NET Object | Excel与.NET 对象进行转换,支持公式、多Sheet等功能
Stars: ✭ 35 (-54.55%)
Mutual labels:  formula, excel
Masuit.tools
ldqk.xyz/55
Stars: ✭ 2,539 (+3197.4%)
Mutual labels:  excel, expression
Formula Parser
Parsing and evaluating mathematical formulas given as strings.
Stars: ✭ 62 (-19.48%)
Mutual labels:  formula, expression
fast-formula-parser
Parse and evaluate MS Excel formula in javascript.
Stars: ✭ 341 (+342.86%)
Mutual labels:  formula, excel
formulize
🌘 formula ui generator
Stars: ✭ 82 (+6.49%)
Mutual labels:  formula, expression
Reogrid
Fast and powerful .NET spreadsheet component, support data format, freeze, outline, formula calculation, chart, script execution and etc. Compatible with Excel 2007 (.xlsx) format and working on .NET 3.5 (or client profile), WPF and Android platform.
Stars: ✭ 532 (+590.91%)
Mutual labels:  formula, excel
Luckysheet
Luckysheet is an online spreadsheet like excel that is powerful, simple to configure, and completely open source.
Stars: ✭ 9,772 (+12590.91%)
Mutual labels:  formula, excel
Formula Parser
Javascript Library parsing Excel Formulas and more
Stars: ✭ 544 (+606.49%)
Mutual labels:  formula, excel
Calx.js
jQuery Calx - a jQuery plugin for creating formula-based calculation form
Stars: ✭ 190 (+146.75%)
Mutual labels:  formula, excel
Mathquill
Easily type math in your webapp
Stars: ✭ 1,968 (+2455.84%)
Mutual labels:  formula, expression
spreadsheet
TypeScript/javascript spreadsheet parser, with formulas.
Stars: ✭ 40 (-48.05%)
Mutual labels:  formula, excel
Excel2LaTeX
The Excel add-in for creating LaTeX tables
Stars: ✭ 914 (+1087.01%)
Mutual labels:  excel
cypress-upload-file-post-form
Solution for two Cypress testing use-cases I came across with: perform a direct http FORM request to the server containing a file and other parameters and upload a file into a form before submission
Stars: ✭ 59 (-23.38%)
Mutual labels:  excel
abap2xlsx
Generate your professional Excel spreadsheet from ABAP
Stars: ✭ 493 (+540.26%)
Mutual labels:  excel
ExcelCollectionViewLayout
An Excel-like UICollectionView's layout.
Stars: ✭ 32 (-58.44%)
Mutual labels:  excel
OpenSpreadsheet
OpenSpreadsheet provides an easy-to-use wrapper around the OpenXML spreadsheet SAX API. It specializes in efficiently reading and writing between strongly typed collections and worksheets.
Stars: ✭ 24 (-68.83%)
Mutual labels:  excel
ExcelExport
Classes to generate Excel/CSV Report in ASP.NET Core
Stars: ✭ 39 (-49.35%)
Mutual labels:  excel
OfficeExtractor
Extracts embedded OLE objects from Word, Excel, PowerPoint, Open Office and RTF files without needing the original programs
Stars: ✭ 67 (-12.99%)
Mutual labels:  excel

ToolGood.Algorithm

English document

ToolGood.Algorithm支持四则运算Excel公式,并支持自定义参数

适用场景: 代码与算法分离,避免项目强制升级

1)项目初期,未确定的算法;

2)项目维护时,经常改动的算法;

3)财务数据、统计数据之中的算法,(注:本项目使用double类型,建议使用为单位);

4)报表导出,数据来源使用存储过程,Word文档内设置算法。例 https://github.com/toolgood/ToolGood.WordTemplate

快速上手

    AlgorithmEngine engine = new AlgorithmEngine();
    double a=0.0;
    if (engine.Parse("1+2")) {
        var o = engine.Evaluate();
        a=o.NumberValue;
    }
    var b = engine.TryEvaluate("1=1 && 1<2 and 7-8>1", 0);// Support(支持) && || and or 
    var c = engine.TryEvaluate("2+3", 0);
    var q = engine.TryEvaluate("-7 < -2 ?1 : 2", 0);
    var e = engine.TryEvaluate("count(array(1,2,3,4))", 0);//{} represents array, return: 4 {}代表数组,返回:4
    var s = engine.TryEvaluate("'aa'&'bb'", ""); //String connection, return: AABB 字符串连接,返回:aabb
    var r = engine.TryEvaluate("(1=1)*9+2", 0); //Return: 11 返回:11
    var d = engine.TryEvaluate("'2016-1-1'+1", DateTime.MinValue); //Return date: 2016-1-2 返回日期:2016-1-2
    var t = engine.TryEvaluate("'2016-1-1'+9*'1:0'", DateTime.MinValue);//Return datetime:2016-1-1 9:0  返回日期:2016-1-1 9:0
    var j = engine.TryEvaluate("json('{\"Name\":\"William Shakespeare\",\"Age\":51,\"Birthday\":\"04/26/1564 00:00:00\"}').Age", null);//Return 51 返回51
    var k = engine.TryEvaluate("json('{\"Name\":\"William Shakespeare   \",\"Age\":51,\"Birthday\":\"04/26/1564 00:00:00\"}')[Name].Trim()", null);//Return to "William Shakespeare"  返回"William Shakespeare" (不带空格)
    var l = engine.TryEvaluate("json('{\"Name1\":\"William Shakespeare \",\"Age\":51,\"Birthday\":\"04/26/1564 00:00:00\"}')['Name'& 1].Trim().substring(2,3)", null);//Return "ill"  返回"ill"

支持常量pi,e,true,false

数值转bool,非零为真,零为假。字符串转bool,0FALSE为假,1TRUE为真。不区分大小写。

bool转数值,假为0,真为1。bool转字符串,假为FALSE,真为TRUE

索引默认为Excel索引,如果想用c#索引,请设置UseExcelIndexfalse

中文符号自动转成英文符号:括号,方括号,逗号,引号,双引号

注:字符串拼接使用&

注:find为Excel公式,find(要查找的字符串,被查找的字符串[,开始位置])

自定义参数

    //Define cylinder information  定义圆柱信息 
    public class Cylinder : AlgorithmEngine
    {
        private int _radius;
        private int _height;
        public Cylinder(int radius, int height)
        {
            _radius = radius;
            _height = height;
        }

        protected override Operand GetParameter(string parameter)
        {
            if (parameter == "半径")
            {
                return Operand.Create(_radius);
            }
            if (parameter == "直径")
            {
                return Operand.Create(_radius * 2);
            }
            if (parameter == "")
            {
                return Operand.Create(_height);
            }
            return base.GetParameter(parameter);
        }
    }
    //Call method  调用方法
    Cylinder c = new Cylinder(3, 10);
    c.TryEvaluate("[半径]*[半径]*pi()", 0.0);      //Round bottom area  圆底面积
    c.TryEvaluate("[直径]*pi()", 0.0);            //The length of the circle  圆的长
    c.TryEvaluate("[半径]*[半径]*pi()*[高]", 0.0); //Volume of circle 圆的体积
    c.TryEvaluate("['半径']*[半径]*pi()*[高]", 0.0); //Volume of circle 圆的体积
    c.EvaluateFormula("'圆'-[半径]-高", '-'); // Return: 圆-3-10
    c.GetSimplifiedFormula("半径*if(半径>2,1+4,3)"); // Return: 3 * 5

参数以方括号定义,如 [参数名]

注:还可以使用AddParameterAddParameterFromJson添加方法,使用DiyFunction+=来自定义函数。

注2:使用 AlgorithmEngineHelper.GetDiyNames 获取参数名自定义方法名

多公式

    ConditionCache multiConditionCache = new ConditionCache();
    multiConditionCache.LazyLoad = true;
    multiConditionCache.AddFormula("桌面积", "[圆桌]", "[半径]*[半径]*pi()");
    multiConditionCache.AddFormula("桌面积", "[方桌]", "[长]*[宽]");
    multiConditionCache.AddFormula("价格", "[圆桌]&& [半径]<2.5", "[桌面积]*1.3");
    multiConditionCache.AddFormula("价格", "[圆桌]&& [半径]<5", "[桌面积]*1.5");
    multiConditionCache.AddFormula("价格", "[圆桌]&& [半径]<7", "[桌面积]*2");
    multiConditionCache.AddFormula("价格", "[圆桌]", "[桌面积]*2.5");
    multiConditionCache.AddFormula("价格", "[方桌]&& [长]<1.3", "[桌面积]*1.3+[高]*1.1");
    multiConditionCache.AddFormula("价格", "[方桌]&& [长]<2", "[桌面积]*1.5+[高]*1.1");
    multiConditionCache.AddFormula("价格", "[方桌]&& [长]<5", "[桌面积]*2+[高]*1.1");
    multiConditionCache.AddFormula("价格", "[方桌]&& [长]<7", "[桌面积]*2.5");

    var algoEngine = new ToolGood.Algorithm.AlgorithmEngineEx(multiConditionCache);
    algoEngine.JumpConditionError = true;
    algoEngine.AddParameter("方桌", true);
    algoEngine.AddParameter("", 3);
    algoEngine.AddParameter("", 1.3);
    algoEngine.AddParameter("", 1);

    var p2 = algoEngine.TryEvaluate("价格", 0.0);
    Assert.AreEqual(3 * 1.3 * 2 + 1 * 1.1, p2, 0.0001);

更多功能请看一下单元测试。

自定义参数

    var helper = new ToolGood.Algorithm.AlgorithmEngineHelper();
    helper.IsKeywords("false"); // return true
    helper.IsKeywords("true"); // return true
    helper.IsKeywords("mysql"); // return false

    DiyNameInfo p5 = helper.GetDiyNames("ddd(d1,22)");
    Assert.AreEqual("ddd", p5.Functions[0]);
    Assert.AreEqual("d1", p5.Parameters[0]);

Excel公式

函数:逻辑函数数学与三角函数文本函数统计函数日期与时间函数

注:函数名不分大小写,带方括号的参数可省略,示例的返回值,为近似值。

注2:函数名带★,表示第一个参数可以前置,如(-1).ISTEXT()

注3:函数名带▲,表示受Excel索引影响,

逻辑函数

函数名说明示例
IFif(测试条件,真值[,假值])
执行真假值判断,根据逻辑计算的真假值,返回不同结果。
if(1=1,1,2)
>>1
ifErrorifError(测试条件,真值[,假值])
如果公式计算出错误则返回您指定的值;否则返回公式结果。
ifError(1/0,1,2)
>>1
isError ★ isError(值)
判断是否出错,返回 TRUE 或 FALSE isError(值,替换值)
如果出错,返回替换值,否则返回原值
isError(1)
>>false
isNull ★ isNull(值)
判断是否为空,返回 TRUE 或 FALSE isNull(值,替换值)
如果为空,返回替换值,否则返回原值
isNull(null)
>>true
isNullOrError ★ isNullOrError(值)
判断是否为空或错误,返回 TRUE 或 FALSE isNullOrError(值,替换值)
如果为空或错误,返回替换值,否则返回原值
isNullOrError(null)
>>true
isNumber ★isNumber(值)
判断是否数值,返回 TRUE 或 FALSE
isNumber(1)
>>true
isText ★isText(值)
判断是否文字,返回 TRUE 或 FALSE
isText('1')
>>true
IsNonText ★IsNonText(值)
判断是否为非文字,返回 TRUE 或 FALSE
IsNonText('1')
>>false
IsLogical ★IsLogical(值)
判断是否为逻辑值,返回 TRUE 或 FALSE
IsLogical('1')
>>false
IsEven ★IsEven(值)
如果数值是偶数,返回 TRUE 或 FALSE
IsEven('1')
>>false
IsOdd ★IsOdd(值)
如果数值是奇数,返回 TRUE 或 FALSE
IsOdd('1')
>>true
ANDand(逻辑值1,...)
如果所有参数均为TRUE,则返回TRUE,如有错误先报错
and(1,2=2)
>>true
ORor(逻辑值1,...)
如果任一参数为TRUE,则返回TRUE,如有错误先报错
or(1,2=3)
>>true
NOTnot(逻辑值)
对参数的逻辑值求反
NOT(true())
>>false
TRUEtrue()
返回逻辑值TRUE
true()
>>true
FALSEfalse()
返回逻辑值FALSE
false()
>>false

数学与三角函数

分类函数名说明示例






Ee()
返回 e 值
E()
>>
PIpi()
返回 PI 值
pi()
>>3.141592654
absabs(数值)
返回数值的绝对值
abs(-1)
>>1
QUOTIENTquotient(除数,被除数)
返回商的整数部分,该函数可用于舍掉商的小数部分。
QUOTIENT(7,3)
>>2
modmod(除数,被除数)
返回两数相除的余数
MOD(7,3)
>>1
SIGNsign(数值)
返回数值的符号。当数值为正数时返回 1,为零时返回 0,为负数时返回 -1。
SIGN(-9)
>>-1
SQRTsqrt(数值)
返回正平方根
SQRT(9)
>>3
TRUNCtrunc(数值)
将数值截尾取整
TRUNC(9.222)
>>9
int ★int(数值)
将数值向下舍入到最接近的整数。
int(9.222)
>>9
gcdgcd(数值,...)
返回最大公约数
GCD(3,5,7)
>>1
LCMlcm(数值,...)
返回整数参数的最小公倍数
LCM(3,5,7)
>>105
combincombin(总数,排列数)
计算从给定数目的对象集合中提取若干对象的组合数
combin(10,2)
>>45
PERMUTpermut(总数,排列数)
返回从给定数目的对象集合中选取的若干对象的排列数
PERMUT(10,2)
>>990
FIXEDfixed(数值[,小数位数[,有无逗号分隔符]])
将数值设置为具有固定小数位的文本格式
FIXED(4567.89,1)
>>4,567.9






degreesdegrees(弧度)
将弧度转换为度
degrees(pi())
>>180
RADIANSradians(度)
将度转换为弧度
RADIANS(180)
>>3.141592654
coscos(弧度)
返回数值的余弦值
cos(1)
>>0.540302305868
coshcosh(弧度)
返回数值的双曲余弦值
cosh(1)
>>1.54308063481
SINsin(弧度)
返回给定角度的正弦值
sin(1)
>>0.84147098480
SINHsinh(弧度)
返回数值的双曲正弦值
sinh(1)
>>1.1752011936
TANtan(弧度)
返回数值的正切值
tan(1)
>>1.55740772465
TANHtanh(弧度)
返回数值的双曲正切值
tanh(1)
>>0.761594155955
acosacos(数值)
返回数值的反余弦值
acos(0.5)
>>1.04719755119
acoshacosh(数值)
返回数值的反双曲余弦值
acosh(1.5)
>>0.962423650119
asinasin(数值)
返回数值的反正弦值
asin(0.5)
>>0.523598775598
asinhasinh(数值)
返回数值的反双曲正弦值。
asinh(1.5)
>>1.1947632172
atanatan(数值)
返回数值的反正切值
atan(1)
>>0.785398163397
atanhatanh(数值)
返回参数的反双曲正切值
atanh(1)
>>0.549306144334
atan2atan2(数值,数值)
从X和Y坐标返回反正切
atan2(1,2)
>>1.10714871779






ROUNDround(数值,小数位数)
返回某个数值按指定位数取整后的数值。
ROUND(4.333,2)
>>4.33
roundDownroundDown(数值,小数位数)
靠近零值,向下(绝对值减小的方向)舍入数值。
roundDown(4.333,2)
>>4.33
roundUproundUp(数值,小数位数)
远离零值,向上(绝对值增长的方向)舍入数值。
roundUp(4.333,2)
>>4.34
CEILINGceiling(数值,舍入基数)
向上舍入(沿绝对值增大的方向)为最接近的 舍入基数 的倍数。
CEILING(4.333,0.1)
>>4.4
floorfloor(数值,舍入基数)
向下舍入,使其等于最接近的 Significance 的倍数。
FLOOR(4.333,0.1)
>>4.3
eveneven(数值)
返回沿绝对值增大方向取整后最接近的偶数。
EVEN(3)
>>4
ODDodd(数值)
将数值向上舍入为最接近的奇型整数
ODD(3.1)
>>5
MROUNDmround(数值,舍入基数)
返回一个舍入到所需倍数的数值
MROUND(13,5)
>>15




RANDrand()
返回 0 到 1 之间的随机数
RAND()
>>0.2
randBetweenrandBetween(最小整数,最大整数)
返回大于等于指定的最小值,小于指定最大值之间的一个随机整数。
randBetween(2,44)
>>9


/





/



factfact(数值)
返回数的阶乘,一个数的阶乘等于 1*2*3*…* 该数。
FACT(3)
>>6
factdoublefactDouble(数值)
返回数值的双倍阶乘
factDouble(10)
>>3840
POWERpower(数值,幂)
返回数的乘幂结果
POWER(10,2)
>>100
expexp(幂)
返回e的指定数乘幂
exp(2)
>>7.389056099
lnln(数值)
返回数值的自然对数
LN(4)
>>1.386294361
loglog(数值[,底数])
返回数值的常用对数,如省略底数,默认为10
LOG(100,10)
>>2
LOG10log10(数值)
返回数值的10对数
LOG10(100)
>>2
MULTINOMIALmultinomial(数值,...)
返回参数和的阶乘与各参数阶乘乘积的比值
MULTINOMIAL(1,2,3)
>>60
PRODUCTproduct(数值,...)
将所有以参数形式给出的数值相乘,并返回乘积值。
PRODUCT(1,2,3,4)
>>24
SqrtPiSqrtPi(数值)
返回某数与 PI 的乘积的平方根
SqrtPi(3)
>>3.069980124
SUMSQsumQq(数值,...)
返回参数的平方和
SUMSQ(1,2)
>>5


DEC2BIN ★DEC2BIN(数值[,位数])
十进制转二进制
DEC2BIN(100)
>>
DEC2OCT ★DEC2OCT(数值[,位数])
十进制转八进制
DEC2OCT(100)
>>
DEC2HEX ★DEC2HEX(数值[,位数])
十进制转十六进制
DEC2HEX(100)
>>
HEX2BIN ★HEX2BIN(数值[,位数])
十六进制转二进制
HEX2BIN(100)
>>
HEX2OCT ★HEX2OCT(数值[,位数])
十六进制转八进制
HEX2OCT(100)
>>
HEX2DEC ★HEX2DEC(数值)
十六进制转十进制
HEX2DEC(100)
>>
OCT2BIN ★OCT2BIN(数值[,位数])
八进制转二进制
OCT2BIN(100)
>>
OCT2DEC ★OCT2DEC(数值)
八进制转十进制
OCT2DEC(100)
>>
OCT2HEX ★OCT2HEX(数值[,位数])
八进制转十六进制
OCT2HEX(100)
>>
BIN2OCT ★BIN2OCT(数值[,位数])
二进制转八进制
BIN2OCT(100)
>>
BIN2DEC ★BIN2DEC(数值)
二进制转十进制
BIN2DEC(100)
>>
BIN2HEX ★BIN2HEX(数值[,位数])
二进制转十六进制
BIN2HEX(100)
>>

文本函数

函数名说明示例
ASC ★asc(字符串)
将字符串内的全角英文字母更改为半角字符
asc('abcABC123')
>>abcABC123
JIS ★
WIDECHAR ★
jis(字符串)
将字符串中的半角英文字符更改为全角字符
jis('abcABC123')
>>abcABC123
CHAR ★CHAR(数值)
返回由代码数值指定的字符
char(49)
>>1
CLEAN ★clean(字符串)
删除文本中所有打印不出的字符
clean('\r112\t')
>>112
CODE ★code(字符串)
返回文本字符串中第一个字符的数值代码
CODE("1")
>>49
CONCATENATE ★concatenate(字符串1,...)
将若干文本项合并到一个文本项中
CONCATENATE('tt','11')
>>tt11
EXACT ★exact(字符串1,字符串2)
检查两个文本值是否完全相同
EXACT("11","22")
>>false
FIND ★ ▲find(要查找的字符串,被查找的字符串[,开始位置])
在一文本值内查找另一文本值(区分大小写)
FIND("11","12221122")
>>5
LEFT ★left(字符串[,字符个数])
返回文本值最左边的字符
LEFT('123222',3)
>>123
LEN ★len(字符串)
返回文本字符串中的字符个数
LEN('123222')
>>6
MID ★ ▲mid(字符串,开始位置,字符个数)
从文本字符串中的指定位置起返回特定个数的字符
MID('ABCDEF',2,3)
>>BCD
PROPER ★proper(字符串)
将文本值中每一个单词的首字母设置为大写
PROPER('abc abc')
>>Abc Abc
REPLACE ★ ▲ replace(原字符串,开始位置,字符个数,新字符串)
replace(原字符串,要替换的字符串, 新字符串)
替换文本内的字符
REPLACE("abccd",2,3,"2")
>>a2d
REPLACE("abccd","bc","2")
>>a2cd
REPT ★rept(字符串,重复次数)
按给定次数重复文本
REPT("q",3)
>>qqq
RIGHT ★right(字符串[,字符个数])
返回文本值最右边的字符
RIGHT("123q",3)
>>23q
RMB ★RMB(数值)
将数值转换为大写数值文本
RMB(12.3)
>>壹拾贰元叁角
SEARCH ★ ▲search(要找的字符串,被查找的字符串[,开始位置])
在一文本值中查找另一文本值(不区分大小写)
SEARCH("aa","abbAaddd")
>>4
SUBSTITUTE ★substitute(字符串,原字符串,新字符串[,替换序号])
在文本字符串中以新文本替换旧文本
SUBSTITUTE("ababcc","ab","12")
>>1212cc
T ★t(数值)
将参数转换为文本
T('123')
>>123
TEXT ★text(数值,数值格式)
设置数值的格式并将数值转换为文本
TEXT(123,"0.00")
>>123.00
TRIM ★trim(字符串)
删除文本中的空格
TRIM(" 123 123 ")
>>123 123
LOWER ★
TOLOWER ★
lower(字符串)
tolower(字符串)
将文本转换为小写形式
LOWER('ABC')
>>abc
UPPER ★
TOUPPER ★
upper(字符串)
toupper(字符串)
将文本转换为大写形式
UPPER("abc")
>>ABC
VALUE ★value(字符串)
将文本参数转换为数值
VALUE("123")
>>123

日期与时间函数

函数名说明示例
NOWnow()
返回当前日期和时间的序列号
NOW()
>>2017-01-07 11:00:00
TODAYtoday()
返回今天日期的序列号
TODAY()
>>2017-01-07
DateValue ★DateValue(字符串)
将文本格式的日期转换为序列号
DateValue("2017-01-02")
>>2017-01-02
TimeValue ★TimeValue(字符串)
将文本格式的时间转换为序列号
TimeValue("12:12:12")
>>12:12:12
DATE ★date(年,月,日[,时[,分[,秒]]])
返回特定日期的序列号
DATE(2016,1,1)
>>2016-01-01
TIME ★time(时,分,秒)
返回特定时间的序列号
TIME(12,13,14)
>>12:13:14
YEAR ★year(日期)
将序列号转换为年
YEAR(NOW())
>>2017
MONTH ★month(日期)
将序列号转换为月
MONTH(NOW())
>>1
DAY ★day(日期)
将序列号转换为月份中的日
DAY(NOW())
>>7
HOUR ★hour(日期)
将序列号转换为小时
HOUR(NOW())
>>11
MINUTE ★minute(日期)
将序列号转换为分钟
MINUTE(NOW())
>>12
SECOND ★second(日期)
将序列号转换为秒
SECOND(NOW())
>>34
WEEKDAY ★second(日期)
将序列号转换为星期几
WEEKDAY(date(2017,1,7))
>>7
dateDIFdateDif(开始日期,结束日期,类型Y/M/D/YD/MD/YM)
返回两个日期之间的相隔天数
dateDIF("1975-1-30","2017-1-7","Y")
>>41
DAYS360days360(开始日期,结束日期[,选项0/1])
以一年 360 天为基准计算两个日期间的天数
DAYS360('1975-1-30','2017-1-7')
>>15097
EDATEeDate(开始日期,月数)
返回用于表示开始日期之前或之后月数的日期的序列号
EDATE("2012-1-31",32)
>>2014-09-30
EOMONTHeoMonth(开始日期,月数)
返回指定月数之前或之后的月份的最后一天的序列号
EOMONTH("2012-2-1",32)
>>2014-10-31
netWorkdaysnetWorkdays(开始日期,结束日期[,假日])
返回两个日期之间的全部工作日数
netWorkdays("2012-1-1","2013-1-1")
>>262
workDayworkday(开始日期,天数[,假日])
返回指定的若干个工作日之前或之后的日期的序列号
workDay("2012-1-2",145)
>>2012-07-23
WEEKNUMweekNum(日期[,类型:1/2])
将序列号转换为一年中相应的周数
WEEKNUM("2016-1-3")
>>2

统计函数

函数名说明示例
MAXmax(数值,...)
返回参数列表中的最大值
max(1,2,3,4,2,2,1,4)
>>4
MEDIANmedian(数值,...)
返回给定数值的中值
MEDIAN(1,2,3,4,2,2,1,4)
>>2
MINmin(数值,...)
返回参数列表中的最小值
MIN(1,2,3,4,2,2,1,4)
>>1
QUARTILEquartile(数值,四分位:0-4)
返回数据集的四分位数
QUARTILE({1,2,3,4,2,2,1,4},0)
>>1
MODEmode(数值,...)
返回在数组中出现频率最多的数值
MODE(1,2,3,4,2,2,1,4)
>>2
LARGE ▲large(数组,K)
返回数据集中第 k 个最大值
LARGE({1,2,3,4,2,2,1,4},3)
>>3
SMALL ▲small(数值,K)
返回数据集中第 k 个最小值
SMALL({1,2,3,4,2,2,1,4},3)
>>2
PERCENTILEpercentile(数值,K)
返回区域中的第 k 个百分位值
PERCENTILE({1,2,3,4,2,2,1,4},0.4)
>>2
PERCENTRANKpercentRank(数值,K)
返回数据集中值的百分比排位
PERCENTRANK({1,2,3,4,2,2,1,4},3)
>>0.714
AVERAGEaverage(数值,...)
返回参数的平均值
AVERAGE(1,2,3,4,2,2,1,4)
>>2.375
averageIfaverageIf({数值,...},条件[,{值1,...}])
返回参数的平均值
averageIf({1,2,3,4,2,2,1,4},'>1')
>>2.833333333
GEOMEANgeoMean(数值,...)
返回正数数组或区域的几何平均值
GEOMEAN(1,2,3,4)
>>2.213363839
HARMEANharMean(数值,...)
返回数据集合的调和平均值
HARMEAN(1,2,3,4)
>>1.92
COUNTcount(数值,...)
计算参数列表中数值的个数
COUNT(1,2,3,4,2,2,1,4)
>>8
countIfcountIf({数值,...},条件[,{值1,...}])
计算参数列表中数值的个数
countIf({1,2,3,4,2,2,1,4},'>1')
>>6
SUMsum(数值,...)
返回所有数值之和。
SUM(1,2,3,4)
>>10
sumIfsumIf({数值,...},条件[,{值1,...}])
返回所有数值之和
sumIf({1,2,3,4,2,2,1,4},'>1')
>>17
AVEDEVaveDev(数值,...)
返回数据点与其平均值的绝对偏差的平均值
AVEDEV(1,2,3,4,2,2,1,4)
>>0.96875
STDEVstDev(数值,...)
基于样本估算标准偏差
STDEV(1,2,3,4,2,2,1,4)
>>1.1877349391654208
STDEVPstDevp(数值,...)
计算基于整个样本总体的标准偏差
STDEVP(1,2,3,4,2,2,1,4)
>>1.1110243021644486
DEVSQdevSq(数值,...)
返回偏差的平方和
DEVSQ(1,2,3,4,2,2,1,4)
>>9.875
VARvar(数值,...)
基于样本估算方差
VAR(1,2,3,4,2,2,1,4)
>>1.4107142857142858
VARPvarp(数值,...)
基于整个样本总体计算方差
VARP(1,2,3,4,2,2,1,4)
>>1.234375
normDistnormDist(数值,算术平均值,标准偏差,返回类型:0/1)
返回正态累积分布
normDist(3,8,4,1)
>>0.105649774
normInvnormInv(分布概率,算术平均值,标准偏差)
返回反正态累积分布
normInv(0.8,8,3)
>>10.5248637
NormSDistnormSDist(数值)
返回标准正态累积分布函数,该分布的平均值为 0,标准偏差为 1。
NORMSDist(1)
>>0.841344746
normSInvnormSInv(数值)
返回反标准正态累积分布
normSInv(0.3)
>>-0.524400513
BetaDistBetaDist(数值,分布参数α,分布参数β)
返回 Beta 累积分布函数
BetaDist(0.5,11,22)
>>0.97494877
BetaInvBetaInv(数值,分布参数α,分布参数β)
返回指定 Beta 分布的累积分布函数的反函数
BetaInv(0.5,23,45)
>>0.336640759
binomDistbinomDist(试验成功次数,试验次数,成功概率,返回类型:0/1)
返回一元二项式分布概率
binomDist(12,45,0.5,0)
>>0.000817409
exponDistexponDist(函数值,参数值,返回类型:0/1)
返回指数分布
exponDist(3,1,0)
>>0.049787068
FDistfDist(数值X,分子自由度,分母自由度)
返回 F 概率分布
FDist(0.4,2,3)
>>0.701465776
FInvfInv(分布概率,分子自由度,分母自由度)
返回 F 概率分布的反函数
FInv(0.7,2,3)
>>0.402651432
FISHERfisher(数值)
返回点 x 的 Fisher 变换。该变换生成一个正态分布而非偏斜的函数
FISHER(0.68)
>>0.8291140383
fisherInvfisherInv(数值)
返回 Fisher 变换的反函数值。
fisherInv(0.6)
>>0.537049567
gammaDistgammaDist(数值,分布参数α,分布参数β,返回类型:0/1)
返回 γ 分布
gammaDist(0.5,3,4,0)
>>0.001723627
gammaInvgammaInv(分布概率,分布参数α,分布参数β)
返回 γ 累积分布函数的反函数
gammaInv(0.2,3,4)
>>6.140176811
GAMMALNgammaLn(数值)
返回 γ 累积分布函数的反函数
GAMMALN(4)
>>1.791759469
hypgeomDisthypgeomDist(样本成功次数,样本容量,样本总体成功次数,样本总体容量)
返回超几何分布
hypgeomDist(23,45,45,100)
>>0.08715016
logInvlogInv(分布概率,算法平均数,标准偏差)
返回 x 的对数累积分布函数的反函数
logInv(0.1,45,33)
>>15.01122624
LognormDistlognormDist(数值,算法平均数,标准偏差)
返回反对数正态分布
lognormDist(15,23,45)
>>0.326019201
negbinomDistnegbinomDist(失败次数,成功极限次数,成功概率)
返回负二项式分布
negbinomDist(23,45,0.7)
>>0.053463314
POISSONpoisson(数值,算法平均数,返回类型:0/1)
返回 Poisson 分布
POISSON(23,23,0)
>>0.082884384
TDisttDist(数值,自由度,返回类型:1/2)
返回学生的 t 分布
TDist(1.2,24,1)
>>0.120925677
TInvTInv(分布概率,自由度)
返回学生的 t 分布的反分布
TInv(0.12,23)
>>1.614756561
WEIBULLweibull(数值,分布参数α,分布参数β,返回类型:0/1)
返回 Weibull 分布
WEIBULL(1,2,3,1)
>>0.105160683

查找引用

函数名说明示例
VLookUp ★ ▲VLookUp({数组,...},值,{列索引}[,模糊匹配:0/1])
纵向查找函数。模糊匹配默认1
VLookUp ★ ▲VLookUp({Json,...},公式字符串,属性名)
JSON数组查找函数。

增加函数 类C#方法

函数名说明示例
UrlEncode ★UrlEncode(文本)
对 URL 字符串进行编码。
UrlDecode ★UrlEncode(文本)
将 URL 编码的字符串转换为已解码的字符串。
HtmlEncode ★HtmlEncode(文本)
将字符串转换为 HTML 编码的字符串。
HtmlDecode ★HtmlDecode(文本)
将HTML 编码的字符串转解码。
Base64ToText ★Base64ToText(文本[,编码类型])
将Base64转换为字符串。
Base64UrlToText ★Base64UrlToText(文本[,编码类型])
将Url类型的Base64 转换为字符串。
TextToBase64 ★TextToBase64(文本[,编码类型])
将字符串转换为Base64字符串。
TextToBase64Url ★TextToBase64Url(文本[,编码类型])
将字符串 转换为Url类型的Base64 字符串。
Regex ★ ▲Regex(文本,匹配文本])
并返回匹配的字符串。
RegexRepalce ★RegexRepalce(文本,匹配文本,替换文本)
匹配替换字符串。
IsRegex ★
IsMatch ★
IsRegex(文本,匹配文本)
IsMatch(文本,匹配文本)
判断是否匹配。
GuidGuid()
生成Guid字符串。
Md5 ★Md5(文本[,编码类型])
返回Md5的Hash字符串。
Sha1 ★Sha1(文本[,编码类型])
返回Sha1的Hash字符串。
Sha256 ★Sha256(文本[,编码类型])
返回Sha256的Hash字符串。
Sha512 ★Sha512(文本[,编码类型])
返回Sha512的Hash字符串。
Crc32 ★Crc32(文本[,编码类型])
返回Crc32的Hash字符串。
HmacMd5 ★HmacMd5(文本,secret[,编码类型])
返回HmacMd5的Hash字符串。
HmacSha1 ★HmacSha1(文本,secret[,编码类型])
返回HmacSha1的Hash字符串。
HmacSha256 ★HmacSha256(文本,secret[,编码类型])
返回HmacSha256的Hash字符串。
HmacSha512 ★HmacSha512(文本,secret[,编码类型])
返回HmacSha512的Hash字符串。
TrimStart ★
LTrim ★
TrimStart(文本)
LTrim(文本)
LTrim(文本[,字符集])
消空字符串左边。
TrimEnd ★
RTrim ★
TrimEnd(文本)
RTrim(文本)
RTrim(文本,字符集)
消空字符串右边。
IndexOf ★ ▲IndexOf(文本,查找文本[,开始位置[,索引]])
查找字符串位置。
LastIndexOf ★ ▲LastIndexOf(文本,查找文本[,开始位置[,索引]])
查找字符串位置。
Split ★Split(文本,分隔符)
生成数组
Split(文本,分隔符,索引)
返回分割后索引指向的字符串。
Join ★Join(文本1,文本2....)
合并字符串。
Substring ★ ▲Substring(文本,位置)
Substring(文本,位置,数量)
切割字符串。
StartsWith ★StartsWith(文本,开始文本[,是否忽略大小写:1/0])
确定此字符串实例的开头是否与指定的字符串匹配。
EndsWith ★EndsWith(文本,开始文本[,是否忽略大小写:1/0])
确定使用指定的比较选项进行比较时此字符串实例的结尾是否与指定的字符串匹配。
IsNullOrEmpty ★IsNullOrEmpty(文本)
指示指定的字符串是 null 还是 空字符串。
IsNullOrWhiteSpace ★IsNullOrWhiteSpace(文本)
指示指定的字符串是 null、空还是仅由空白字符组成。
RemoveStart ★RemoveStart(文本,左边文本[,忽略大小写])
匹配左边,成功则去除左边字符串。
RemoveEnd ★RemoveEnd(文本,右边文本[,忽略大小写])
匹配右边,成功则去除右边字符串。
Json ★json(文本)
动态json查询。
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].