学习Excel技术,关注微信公众号:
excelperfect
本次的练习是:从一个由文本和数字组成的文本字符串中,提取出连续最长的数字。如下图1所示,在单元格B2中包含一个由文本和数字组成的字符串,很显然,其最长数字是9367。

图1
如何使用公式获得结果?
解决方案
在单元格C2中输入数组公式:
=MAX(IFERROR(MID(B2,ROW($A$1:$A$50),COLUMN($A$1:$Z$1))*1,""))
结果如下图2所示。

图2
公式解析
在公式中,使用了MID函数,通常,我们使用MID函数如下:
=MID(B2,5,2)
返回单元格B2中从第5个字符开始的2个字符,在图1的示例中,返回“2E”。
公式中共3个部分:单元格引用,起始位置,要提取的字符数。
然而,现在要从单元格B2内的每个起始位置提取多个值!
在上面解决方案的公式中:
ROW($A$1:$A$50)
创建了50个起始位置。
COLUMN($A$1:$Z$1)
对于每个起始位置,依次提取1个、2个、……最多到26个字符。
MID(B2,ROW($A$1:$A$50),COLUMN($A$1:$Z$1))
的结果如下图3所示。

图3
由于我们仅需要纯数字,例如6、62、622,等等。于是,对MID函数获得的数组乘以1,这样,数字文本转换成数字,而其它则为错误,如下图4所示。

图4
IFERROR函数将所有错误值转换为空,这样只剩下数字,如下图5所示。

图5
MAX函数从这些数字中提取最大值,得到结果:
9367
小结
当ROW函数和COLUMN函数一起使用时,会创建一个二维数组。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。

文章转载自完美Excel,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




