小而美的函数之LEN函数
时间:2023-03-08 14:56:42
LEN函数非常小巧,就1个参数,返回参数指定值的字符数,其基本用法如图1所示。
图1
注意,当对日期单元格求长度时,LEN函数计算的是表示日期的序号的长度。对错误值单元格求长度时,LEN函数返回错误值。
可以使用数组公式一次性求单元格区域中各单元格中的字符长度,如图2所示。
图2
可以看出,LEN函数甚至比我们上篇文章中介绍的ROW函数和ROWS函数还要简单,但将其在公式中合理运用时,能够更充分发挥作用。
LEN函数之美
LEN函数的美在于能够提供最终的确切数字,并为其他函数所用。如果说ROW函数是提供动态变化数字的计数器的话,那么LEN函数提供的数字就是计数终结的地方。
下面我们通过小示例演示LEN函数在公式中的美妙运用。
作为ROW函数的参数根据单元格数据长度生成连续的数字数组
如图3所示,使用数组公式:
=ROW(INDIRECT(“1:”& LEN(B2)))
生成由连续数字组成的数组{1;2;3;4;5}。数字的个数取决于单元格B2中的字符数。也就是说,当LEN函数的参数单元格中的字符变化时,生成的数字数组也相应变化,这就为公式的扩展提供了灵活性。
图3
作为ROW函数的参数并与MID函数配合拆分字符串
如图4所示,将单元格B2中的字符串拆分成单个的字符,使用数组公式:
=MID(B2,ROW(INDIRECT(“1:”& LEN(B2))),1)
正如上文介绍的,ROW(INDIRECT(“1:” &LEN(B2)))根据单元格文本的长度生成连续数字,然后以这些数字为起点在单元格中提取1个字符,生成单独的字符组成的数组,即完成单元格字符串的拆分。
图4
作为MATCH函数和MAX函数的参数获取单元格列区域中最长文本所在单元格的位置
如下图5所示,要求某一区域如B2:B5中最长文本所在单元格的位置,可以使用数组公式:
=MATCH(MAX(LEN(B2:B5)),LEN(B2:B5),0)
LEN函数分别作为MAX函数和MATCH函数的参数。其中,LEN(B2:B5)生成一系列由单元格区域中各单元格数据长度值组成的数字,MAX函数获取最大值,即该单元格区域中的最长文本数,MATCH函数在LEN函数生成的数字数组中查找这个最长文本数,即为最长文本所在单元格的位置。
图5
更进一步,在得到最长文本所在单元格的位置后,再结合INDEX函数或者OFFSET函数即可获取该单元格中的文本。
与SUBSTITUTE函数配合求字符串中某字符出现的次数
如图6所示,要求字符串中指定字符出现的次数,本例中是字符“e”在“excelperfect”中出现的次数,使用公式:
=LEN(B2)-LEN(SUBSTITUTE(B2,”e”,””))
公式前面求的是总字符数,后面是将字符“e”替换后的字符串,两者相减即为字符“e”出现的次数。
图6
结语
在公式中灵活使用LEN函数生成的数字或数字数组,可以提供计数终结数,也为获取字符或字符串提供了便利。