EFunction高级函数工具为Excel高级函数插件,该插件扩充了60个函数,适用于Excel2013、2016、2019及365版本。这个只有window下有效。mac无效。
EFunction加载成功后,可以使用此号码联网获取永久码,获取成功后,别忘了保存永久注册码。
ETSQL应该是EFunction超级函数工具里面最具代表性,功能最强大的一个函数。这个函数,可以实现VLOOKUP函数所有功能,也可以实现VLOOKUP函数不能实现的功能;这个函数也可以实现sumifs函数系所有的功能,也可以实现sumifs函数系不能够实现的功能。
夸了这么久ETSQL函数功能的强大。ETSQL为啥功能这么强大,这是因为ETSQL函数,利用了Excel内置的SQL引擎,执行了SQL操作。
SQL语言可以实现数据查询操作,数据统计工作,甚至可以实现数据更改操作(ETSQL只支持数据查询、统计工作)
SQL函数执行结果为一个数组,Excel 365版本用户,可以利用动态数组特性,将所有结果显示出来,低版本Excel,可以利用ETResize函数,动态显示所有结果。
介绍几个ETSQL函数典型应用案例,如果之前没有学习SQL知识,收藏好了,等下次老板派任务时,就派上用场了。
一、数据复杂查询
Excel SQL基本语言和其他数据库语法基本类似,但也有自身特点。数据查询基本语法为:
select something from [table$] where conditions
其中select from where 关键词位置必须固定,而且必须存在,不限定条件时,where可以没有。
样例数据为胡诌数据
上图样例数据,为胡诌的数据,如果想把这个表格里面班组为01班的人所有信息,都查询出来,则SQL脚本为:
SELECT * FROM [胡诌数据 $ ] WHERE 班组 = '01班'
select 后面“*”号表示查询所有的字段(列)数据,表格为“胡诌数据"sheet表格的名称,where后面条件就是 班组='01班'。执行结果如下图所示,将所有为01班的数据全部查询出来,配合ETResize函数(365版本动态数组直接显示)。
条件查询
如果想查询01班的人员信息,只需要将SQL脚本之中01班替换成07班即可。实际应用场景之中,可以通过下拉菜单实现。完整SQL脚本,可以通过Excel公式拼接完成。
动态筛选查询
增加一下复杂度,想查询01班组下,工资大于14900的所有人的信息。则SQL脚本写法为:
SELECT * FROM [胡诌数据 $ ] WHERE 班组 = '01班' AND 工资 > 14900
双条件过滤
添加工资限制条件后,总共只查询出来了12个人的信息。多个条件之中使用“and”做拼接。,表示两个条件必须同时满足。如果将and 改为or,则表示01班的人或者工资大于14900的人,都会被选择出来。
二、求平均工资
有这样一种需求,想统计每个班级平均工资,那SQL该怎么写呢?
SELECT 班组, avg( 工资 ) FROM [胡诌数据 $ ] GROUP BY 班组
再增加一下需求难度,统计出来平均工资后,想按工资,降序排序,则SQL写法为:
SELECT 班组, avg( 工资 ) FROM [胡诌数据 $ ] GROUP BY 班组 ORDER BY avg( 工资 ) DESC
avg是聚合函数,SQL里常用聚合函数有sum,count等。order by 是排序关键词,后面跟着排序条件,desc降序,asc是升序。
上述这种统计各个班组平均工资,并且根据平均工资进行降序,排序还可以通过ETAggregate函数实现。完整函数形式为:=ETResize(ETSortBy(ETAggregate(胡诌数据!B2:H7326,3,{1,3}),2,TRUE)),执行结果和ETSQL函数一模一样。
ETSQL上述上述介绍,已经实现了office 365 FILTER,实现了EFunction高级函数ETAggregate,SortBy等高级函数所有的功能,这是不是很强大。
三、来一个复杂的高级需求
有这样一种需求,需要统计出来班级总工资最高的班级,并且展示前TOP10高工资的员工信息。
那这样怎样处理呢?
要想实现这样的需求,先要将需求进行分解。第一步先确定哪个班级的平均工资最高,
select 班组 from[胡诌数据$] group by 班组 order by avg(工资)desc limit 1
把上文求平均工资,并排序的SQL脚本稍加改动,在脚本后面添加 top 1,表示只提取排序好的数据第一行。可以将“03班”提取出来。
SELECT top 10 * FROM [胡诌数据 $ ] WHERE 班组 = ( SELECT top 1 班组 FROM [胡诌数据 $ ] GROUP BY 班组 ORDER BY avg( 工资 ) DESC ) ORDER BY 工资 DESC
完整的SQL脚本如上所示,将最高平均工资的班级,提取出来后,最为查询指定班组的TOP10工资。上述脚本等价为:
SELECT top10 * FROM [胡诌数据 $ ] WHERE 班组 = '03班' ORDER BY 工资 DESC
最高工资的班组,前10名成员
下文为三个ETSQL函数三个典型应用动画:
ETSQL 统计平均值
统计人数
计算总额
注意实现:
ETSQL功能很强大,但不能“贪杯”,ETSQL可以用来实现复杂数据查询工作,复杂数据统计工作;
Excel SQL引擎,需要数据保持强类型数据,这点和Excel本身数据类型是相悖的,在使用Excel SQL之前需要保证,每列数据为一种数据类型,例如数值类型,则该列都是数值类型,布尔类型则都是布尔类型,文本类型,则应该都是文本类型数据。
不在在查询数据的表格内使用ETSQL函数,可以这么理解,不要再本表格内查询本身,这就陷入一个死循环,可能导致Excel异常退出。当然这点,并不是不可破解的。ETSQL函数有三个参数。第三个参数,就是破解之法,具体还需要实际操练一下。
如果EFunction的ETSQL函数对你有帮助,欢迎关注并分享,并向小编获取EFunction工具。后续小编继续卖力讲解ETSQL典型应用脚本模板。