题目:从一个字符串中找到4个数字,然后取4个数字的最大值
实际工作中会遇到产品规格的数字与单位组合在一起的情况:
尺寸
1000 mmx450 mm-1000 mmx450 mm
1000 mmx600 mm-1000 mmx600 mm
1000 mmx600 mm-600 mmx600 mm
1000 mmx600 mm-800 mmx600 mm
1000 mmx700 mm-1000 mmx700 mm
1000 mmx700 mm-600 mmx500 mm
1000 mmx700 mm-600 mmx600 mm
1000 mmx700 mm-700 mmx600 mm
1000 mmx700 mm-700 mmx700 mm
1000 mmx700 mm-800 mmx500 mm
1000 mmx800 mm-1000 mmx800 mm
1000 mmx800 mm-800 mmx600 mm
我们要找到最大的长度:每行4个数值中取最大值。
这个问题有三种解决办法:
分列操作:
使用符号分列、固定宽度分列,或者批量替换字符,找到4个数值,然后用MAX函数取最大值。虽然看起来步骤挺多的,不过思路清晰的化,应该很容易得到正确答案。
Power Query的解法:
Power Query中分离出字符的操作变得更加简单,从非数字到数字,从数字到非数字,很容易就分离出来。
删除非数字的列,修改数据类型,添加索引列:
逆透视数字列,根据索引分组取最大值:
然后加载到表就可以了。
公式法:
我们之前学习过的分列公式组合:
这个问题中的情况要稍微复杂点,应为多了些字母,需要预先处理:
用嵌套的SUBSTITUTE公式替换掉“mmx”,“mm-”,“ mm”,替换后的字符串应该是这个样子的“1000 450 1000 450”
替换后的字符串=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(E2,"mmx",),"mm-",)," mm",)
然后我们再用分列公式,拆分数字:
4个数字=--TRIM(MID(SUBSTITUTE(替换后的字符串," ",REPT(" ",LEN(E2))),(ROW($1:$4)-1)*LEN(E2)+1,LEN(E2)))
--是为把文本转换成数值。
最后就是取最大值:
MAX=MAX(4个数字)
完整的公式:
=MAX(--TRIM(MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(E2,"mmx",),"mm-",)," mm",)," ",REPT(" ",LEN(E2))),(ROW($1:$4)-1)*LEN(E2)+1,LEN(E2))))
这是一个单个单元格的数组公式,需要用CTRL+SHIFT+ENTER三键结束。
这其实就是分列公式组合的一个扩展,增加了替换嵌套,和MAX函数。
如果不记得分列公式组合可以到这里复习一下: