分类: WPS

wps公式函数学习

  • 一个例子拉通LEFT、MID、RIGHT、FIND、LEN五个Excel函数用法,你总会用到

    在Excel操作中,截取字符串中某段指定的字符是经常遇到的问题,而执行这常见问题的常规函数就非“LEFT”、“MID”、“RIGHT”、“FIND”、“LEN”莫属了,尤其是将五者有机组合后,可以实现更多截取信息的操作,非常实用。下面就分别说明以上五个函数的语法,并以一个案例贯穿五个函数的用法。

    如果觉得有用,点击收藏以备不时之需。

    语法与解释

    LEFT函数

    LEFT函数的主要作用是基于指定的字符串返回文本里字符串中从左开始的第一个或前几个字符串

    LEFT(text, [num_chars])
    LEFT(要提取字符的文本字符串, [由 LEFT 所提取的字符数])

    即,从指定字符串(单元格)左侧开始,截取N个字符。N的数量为函数第二参数的数值。

    MID函数

    MID函数的主要作用是从一个字符串中截取出指定数量的字符

    MID(text, start_num, num_chars)
    MID(要提取字符的文本字符串,从左起第几位开始截取,截取几位字符)

    即,从指定字符串(单元格)中的某一个位置开始,截取指定数量的字符。

    RIGHT函数

    RIGHT函数的主要作用是基于指定的字符串返回文本里字符串中从右侧开始的最后一个或后几个字符串

    RIGHT(text,[num_chars])
    RIGHT(要提取字符的文本字符串, [由 RIGHT 所提取的字符数])

    即,从指定字符串(单元格)右侧开始,截取N个字符。N的数量为函数第二参数的数值。

    FIND函数

    FIND函数用于返回一个字符串在另一个字符串中出现的起始位置(区分大小写)

    FIND(find_text,within_text,start_num)
    FIND(查找的字符串,要在其中查询的源字符串,制定从源字符串中第几个字符开始查找)

    即,从指定指定字符串(单元格)中查找某个特定的字符串所在的位置,返回该字符串所在位置的数值。

    LEN函数

    LEN函数用于返回文本字符串中的字符个数

    LEN(text)

    即,从指定指定字符串(单元格)中返回该字符串总的字符数量。

    案例

    提取以下设备规格中的“长”、“宽”、“高”

    截取长度


    位于字符串最左侧的长度数据,很容易就让人想到使用LEFT函数提取,而问题在于,LEFT函数中,第二参数要给出明确的提取字符的数量,问题中的长度却不是固定的。分别有3位的“400”、“600”、“800”与4位的“1200”、“1600”、“1800”两种字符长度。

    LEFT(text, [num_chars])
    LEFT(要提取字符的文本字符串, [由 LEFT 所提取的字符数])

    在这里,怎么告诉Excel哪几个字符串我们需要截取3个字符,哪几个字符串我们需要截取4个字符呢?

    这就要使用到FIND函数了,利用FIND函数返回一个数值,用这个数值在构造我们需要截取的字符数数值。

    在这里,我们需要利用长*宽*高中的“*”符号,来查询其在字符串中的位置,并返回位置数值。

    在C3单元格键入以下公式:=LEFT(B3,FIND(“*”,B3)-1)

    上述公式含义为:在B3单元字符串“400*800*1200”中,从字符串左侧开始截取N位字符。其中N为字符“*”在B3单元格字符串中第一次出现的字符位置减去“1”。

    在“400*800*1200”中,为=LEFT(B3,4-1)=LEFT(B3,3),即返回B3单元格字符串左起头三个字符,“400”;

    在“1200*800*500”中,为=LEFT(B6,5-1)=LEFT(B6,4),即返回B6单元格字符串左起头三个字符,“1200”;

    长度截取得以解决。

    提取宽度

    宽度值位于字符串中间,让人想到使用MID函数提取,而问题在于,MID函数中,第二参数要给出明确的开始截取字符的位置,第三参数要给出明确的截取长度,问题中的开始截取位置与截取长度均不是固定的。

    MID(text, start_num, num_chars)
    MID(要提取字符的文本字符串,从左起第几位开始截取,截取几位字符)

    此时,我们也需要利用FIND函数找位置的特性找出并返回两个指定的位置:一个是第一个“*”出现的位置X,它是我们开始截取字符的起点;在一个是第二个“*”出现的位置Y。

    通过(Y-1)与X之差得到我们需要截取的字符数量。

    在D4单元格中键入以下公式:

    =MID(B3,FIND(“*”,B3)+1,FIND(“*”,B3,FIND(“*”,B3)+1)-1-FIND(“*”,B3))

    上述公式含义为:从B3字符串的第一个“*”后的一个位置为起点开始截取,截取第二个“*”出现的位置减去1再减去第一个“*”出现位置的数值,作为截取字符段长度。

    在“400*800*1200”中,为=MID(C3,5,8-1-4)=MID(C3,5,3),即返回C3单元格字符串中从第5个字符开始,截取3个字符,“400”;

    在“1600*1200*600”中,为=MID(C7,6,10-1-5)=MID(C7,6,4),即返回C7单元格字符串中从第6个字符开始,截取4个字符,“1200”;

    宽度截取得以解决。

    截取高度

    高度值位于字符串最右侧,我们可以利用RIGHT函数来截取其数值。从RIGHT函数的语法可知,我们需要给出明确、固定的截取位数,才能完成字符截取,而案例高度数值位数有3位数的“800”、“400”、“500”,也有4位数的“1200”、“1500”,不是明确、固定的。

    RIGHT(text,[num_chars])
    RIGHT(要提取字符的文本字符串, [由 RIGHT 所提取的字符数])

    此时,我们可以利用LEN函数,返回字符串总字符数量数值,减去第二个“*”所在位置后一位,作为要截取的字符位数。

    上述公式含义为:从E3字符串的最右侧为起点开始截取,截取总字符串字符数量数值减去第二个“*”出现的位置后1位的数值,作为截取字符段长度。

    在“400*800*1200”中,为=RIGHT(E3,12-8)=MID(E3,4),即返回E3单元格字符串中从最右侧开始截取4个字符,“1200”;

    在“1600*1200*600”中,为=MID(E7,13-10)=MID(E7,3),即返回E7单元格字符串中从最右侧开始截取3个字符,“600”;

    高度截取得以解决。

    总结

    对于字符串的截取,数量运用LEFT、MID、RIGHT、FIND、LEN五个函数,可以实现从字符串的左侧、中间任意位置、右侧等作为任意起点位置,截取任意长度的字符数。其中最难以处理的问题,就是利用“FIND”函数将“LEFT”、“MID”、“RIGHT”函数中需要确定的一个绝对的“明确的、固定的截取长度”,转化为一个相对的“明确的、固定的截取长度”。

  • WPS表格中LET函数深度解析及应用实例分享

    LET函数是WPS表格新增的函数之一,它用于在公式中定义变量并为其赋值,再通过变量名引用计算结果,实现公式简化、避免重复计算、提升可读性和运算效率。可用于通过定义公式内的名称来存储中间计算结果和值,将计算结果分配给名称,这些名称仅在LET函数作用域内适用。

    语法:=LET(名称1,名称值1,计算或名称2,…)

    参数说明:

    [名称1]:变量名称,指的就是定义名称,可以是中文可以是字母等(如总分、折扣率,需符合WPS表格命名规则,不能以数字开头)。

    [名称值1]:变量对应的值或计算结果,可以是单元格,可以是单元格区域,可以是函数公式等(如A2:A10、SUM(B2:B10))。

    [计算或名称2]:最终计算表达式,必须包含LET里已定义的一个或若干名称的函数公式等。

    以上是对LET函数的语法和参数的具体介绍,下面通过一些应用实例来具体介绍它在WPS表格中的应用场景。

    1.简化多步骤计算(总分+平均分)

    需求:计算学生的“总分”和“平均分”,避免公式中重复引用数据区域。

    数据示例:

    公式:=LET(总分,B2:B4+C2:C4,平均分,总分/2,HSTACK(A2:A4,总分,平均分))

    解释:通过定义“总分”变量,避免在“平均分”公式中重复计算B2:B4+C2:C4。

    2.避免重复计算(折扣价计算)

    需求:根据“原价”和“折扣率”计算“折后价”和“节省金额”,避免重复引用原价。

    数据示例:

    公式:=LET(原价,B2:B4,折扣价,原价*C2:C4,节省金额,原价-折扣价,VSTACK({“商品”,”折扣价”,”节省金额”},HSTACK(A2:A4,折扣价,节省金额)))

    解释:“原价”变量仅计算一次,后续“折后价”和“节省金额”直接引用,减少运算量。

    3.名称值为函数公式

    需求:对二维表格数据进行转换为一维表格。

    数据示例:

    公式:=LET(fx,LAMBDA(x,TOCOL(IF(B2:D4<>””,x,1/0),3)),HSTACK(fx(A2:A4),fx(B1:D1),fx(B2:D4)))

    解释:定义了一个名为fx的LAMBDA函数,并在后续计算中重复调用它。‌HSTACK函数将上述三个结果‌水平堆叠‌,生成最终的三列输出。

    4.排名计算与动态排序(RANK+SORT)

    需求:计算“销售额”降序排名,并按排名升序排列数据。

    数据示例:

    公式:=LET(数据,A3:D8,工资,INDEX(数据,,4),排名,RANK(工资,工资,0),SORT(HSTACK(数据,排名),5,1))

    解释:排名,变量独立计算,避免在排序时重复调用。

    5.多变量统计(求和+计数+平均)

    需求:一次性计算“销量”列的总和、计数、平均值,变量化多指标统计。

    数据示例:

    公式:=LET(工资汇总,SUM(D3:D8),计数,ROWS(D3:D8),平均,工资汇总/计数,VSTACK({“工资总和”,”人数”,”平均工资”},HSTACK(工资汇总,计数,平均)))

    解释:通过变量一次性存储多个统计结果,最后用VSTACK和HSTACK来堆叠输出结果。

    6.模拟FOR循环

    需求:从5开始逐步减1,每次把这个数加入结果数组。

    数据示例:

    公式:=LET(fx,LAMBDA(x,y,IF(x=0,DROP(y,1),fx(x-1,VSTACK(y,x)))),fx(5,””))

    解释:生成5的倒数的序列数。

    7.将表格倒置过来

    需求:将一个表格的数据整体倒转过来。

    数据示例:

    公式:=LET(fx,LAMBDA(x,IF(ROWS(x)=1,x,VSTACK(fx(DROP(x,1)),TAKE(x,1)))),fx(A2:B16))

    解释:生成一个倒置的表格数据。

    8.来一个中式排名

    需求:对成绩前3名(含第3名)进行排名。

    数据示例:

    公式:=MAP(B2:B10,LAMBDA(x,LET(y,SUMPRODUCT((B2:B10>=x)/COUNTIF(B2:B10,B2:B10)),IF(y>=4,””,y))))

    解释:LET(y, SUMPRODUCT(…), IF(…)),作用:通过LET定义变量y(存储中间计算结果),简化公式逻辑。根据y的值判断输出内容:若y≥4(大于等于x的唯一值数量≥4),返回空字符串(””);否则返回y(唯一值数量)。

    9.提取数据为两列

    需求:前面的数字是学生的序号,后面是这批学生对应的积分,但是由于填写的不规范,实际比较乱(模拟的最乱情况),现在想整理成一维表,一列学号,一列积分。

    数据示例:

    公式:=LET(t,TOCOL(REGEXP(A1,”\d+”)),IF({1,0},DROP(t,-1),TAKE(t,-1)))

    解释:公式用于从A1单元格文本中提取所有数字,并将其拆分为两列结果:第一列:提取的所有数字(除最后一个数字外);第二列:提取的最后一个数字。

    10.汇总多个工作表

    需求:对1—3月表数据进行汇总(月表格式一致)

    数据示例:

    公式:=LET(x,VSTACK(‘1月:4月’!A2:B20),GROUPBY(TAKE(x,,1),TAKE(x,,-1),SUM,,,,TAKE(x,,1)<>””))

    解释:公式通过LET函数定义变量,结合VSTACK合并多表数据,最终使用GROUPBY分组聚合,实现跨工作表数据的汇总分析。整体逻辑为:合并数据→分组求和→筛选非空行。

    通过以上场景可见,LET函数通过变量定义解决了传统公式的“可读性差、重复计算、逻辑复杂”三大痛点,是WPS表格中“公式模块化”的核心工具,尤其适合处理多步骤、复杂逻辑的数据计算,赋予表格“灵魂级”的灵活性与效率,是数据分析师的必备技能。

  • LAMBDA函数详解

    LAMBDA函数,中文发音为“拉姆达”。这个函数的诞生,标志着表格函数也进入了编程时代。Excel中的LAMBDA函数是一种自定义函数,允许用户根据自己的需求创建一个特定的函数。使用LAMBDA函数可以将一系列操作组合成一个简单的函数,方便在工作表中重复使用。

    这个函数在Excel365版本和当前的WPS最高版本中可用。

    说它是公式函数领域的尖端水平也毫不为过,没用过或用不上的人可能视之为鸡肋,一旦用过则是爱不释手。

    在Excel中调出函数BYROW的函数板,它的作用是“将LAMBDA函数应用于每一行并返回结果的数组”。

    也就是说这是一个专门为LMABDA服务的函数,BYROW脱离了LMABDA将毫无价值,而这样的函数总共有6个:

    BYROW, BYCOL, MAKEARRAY, MAP, REDUCE, SCAN

    6个函数的功能大相径庭各有千秋,但它们有着一个共同的使命:让LAMBDA更强大更灵活。

    LAMBDA就像大哥一样带着一群小弟闯荡江湖。接下来会对小弟们逐一分析介绍,但在此之前得先认识LAMBDA。

    =LAMBDA([参数1,参数2,参数3……],计算)

    参数:要传递给函数的值,例如单元格引用、字符串或数字。最多可以输入 253 个参数。此参数可选。

    计算:要作为函数结果执行并返回的公式。其必须为最后一个参数,且必须返回结果。此参数是必需项。

    LAMBDA总共253个参数中,如果启用了前N个,那么前N-1个参数用于定义参数,第N个参数则用于定义计算。

    =LAMBDA(x,y,a,b,(x+y+b)*a)

    例如这个公式中启用了5个参数,前4个用于定义参数x,y,a,b,第5个参数则用于定义计算(x+y+b)*a

    以上公式仅仅定义了参数和计算,4个参数并没有具体的值,所以输入到单元格中并不会返回具体的结果。

    给参数赋值的方式是在LAMBDA后面紧跟一个括号,把各个参数的值置于其中:

    =LAMBDA(x,y,a,b,(x+y+b)*a)(2,4,3,2)

    这里的(2,4,3,2)依次传递给x,y,a,b,然后用它们执行计算(2+4+2)*3,返回结果24.

    如果在vba里,实际上相当于先定义一个函数,然后再调用,只是在单元格里,这是一个匿名函数,如果结合自定义名称使用 就和VBA一模一样了!

    Function fx(x,y,a,b) fx=(x+y+b)*a)End Function//然后再调用fx(2,4,3,2)

    除了传递数值,引用和公式也是常规操作:

    =LAMBDA(x,y,a,b,(x+y+b)*a)(A2,B2,C2,IF(D2<0,-D2,D2))

    A2,B2,C2分别传递给x,y,a,而传递给b的则是IF判断的结果。

    这种通过括号赋值传递参数,在其他任何函数身上都看不到,是LAMBDA特有的方式。

    另外一种传递参数的方式是定义名称。

    在公式选项卡下定义名称,名称可用自由命名,LAMBDA公式粘贴到【引用位置】。

    在工作表中调用名称并对其赋值:

    =AA(A2,B2,C2,D2)

    这样的操作相当于定义了一个新的函数,函数名为AA,有4个参数,函数的功能是前三个值相加后乘以第四参数。

    定义计算时可用调用Excel自带的任何函数,任意组合来达到想要的目的。这就是LMABDA另一个强大之处,支持用户自定义函数,包括函数的功能,参数都可以自由发挥。