95%的人都不知道的两个Excel冷门函数,真香!
每天一点小技能
职场打怪不得怂
编按:Excel中有几百个函数,我们不可避免的会不知道很多函数,它们或许很实用却没有被我们知道的机会。下面,小E要讲的两个冷门函数,就是这样的宝藏!巧妙应用它们,可以不拆分任何区间数据,轻松完成各种普通计算、阶梯式计算……
【前言】
Z=a+bi(或者Z=a+bj),这种格式的数学表达式,被称作“复数”。它代表了一组二元有序的实数对(a,b),其中加号两边a为“实部”,bi(或者bj)为“虚部”;实数a为复数实部的实数,b为复数虚部的实数,i(或者j)称为虚部系数。这是高中的代数知识,姑且不论复数的现实意义,我们借此话题来引出今天的两个函数,和这两个函数在工作中的实用价值。
【正文】
IMREAL函数
语法:IMREAL(INUMBER)
参数只有一个,就是INUMBER,NUMBER是数值,INUMBER就是复数的意思。
函数意义:返回以 x+yi 或 x+yj 文本格式表示的复数的实系数(即x值)。
用法举例:
IMAGINARY函数
语法:IMAGINARY(INUMBER)
IMREAL函数的参数也只有一个,也是INUMBER(复数)
函数意义:返回以 x+yi 或 x+yj 文本格式表示的复数的虚系数。(即:y值)
用法举例:
【工作实例】
存在即合理,这两个函数对于和数学教研有关系的工作来说毋庸置疑是有意义。对于在企业、商业性质公司就职的同学们来说,一样也可以使用这两个函数处理问题,如下例。
某公司的销售提成是按照销售单量进行的提成,A1:B11单元格区域是提成算法的参数表,要求员工在D3:G7单元格区域,根据每个人的销售单量计算提成单价和提成额。
问题解析:
这个数据的难点是A1:B11区域的参数表写法:“0-100”、“301-400”,都是文本字符串。
在之前的文章中介绍过“区间取值”的问题(当时给了相当多的解决方案),都是要将数据的“起止范围值分开到两个单元格内”,但如果不拆分区间数据,其实可以使用IMREAL函数来处理。如下:
在F4单元格输入函数:
{=VLOOKUP(E4,IF({1,0},IMREAL($A$2:$A$11&"i"),$B$2:$B$11),2,1)}
首先,A2:A11单元格的内容连接一个“i”,形成“复数”,即"0-100i";"101-200i";"201-300i";"301-400i";"401-500i";"501-600i";"601-700i";"701-800i";"801-900i";"901-1000i"。(ps:用“j”也可以,这里需要主要,按照数学表达式的规定,只可以用小写字母“i或者j”,其他字母都不可以,大写字母也不可以),然后使用IMREAL提取实系数组成的数列,如下:
剩下的就是VLOOKUP+IF{1,0}的组合使用问题,因咱们部落窝对于此问题的文章教程很多,笔者就不在此赘述了。函数录入完,使用CTRL+SHIFT+ENTER组合键转成数组函数即可。最后的提成额使用“单量*单价”即可,完成后如下图:
【问题延伸】
还是这个问题,我们把问题难度加大一下,看看IMREAL函数是不是还可以继续使用,如下:
这种提成方式其实也不是笔者故意加大解题难度,现实工作中此种提成计算方法比比皆是——“阶梯算法”。
在G4单元格输入函数:
{=SUM(TEXT(E4-TEXT(IMREAL($A$2:$A$11&"i")-1,"0;!0;"),"[>100]!1!0!0;[<0]!0;0")< span="">
*$B$2:$B$11)}
函数解析:
STEP1:
因为参数表中给出每档的起始值是:0,101,201,301……,所以我们用IMREAL函数提取出实系数后再减去1,得到数列{-1,100,200,300,……}
STEP2:
使用TEXT函数的条件判断方法将小于0的值强制显示为0
STEP3:
再使用TEXT函数的条件判断方法,判断E4单元格的单量值减去数列的区间,如果大于0,强制返回100(!1!0!0);小于0,返回0;等于0,就返回差值。在此,可以先看一下到这一步的时候,函数的数列形成了什么,如下图:
STEP4:
这个数列再乘以B2:B11单元格的提成单价,得到下面的数列,如图:
STEP5:
再使用SUM函数计算总提成额,最后使用CTRL+SHIFT+ENTER组合键将函数转成数组函数。结果如下:
【编后语】
EXCEL2016版的函数大概有400多个,笔者自认为常用函数是比较多的,也差不多就只有100多个,可以说还有很大比例的函数内容还没有使用过。既然设计了这个函数就一定会有它存在的道理,活学活用、善学善用是我们一直前行进步的动力。