欢迎转发和点一下“在看”,文末留言互动!
置顶公众号或设为星标及时接收更新不迷路
小伙伴们好,今天要和大家分享一到烧脑的题目。题目是这个样子的。
根据商品名称中的描述,将规格提取出来单列在B列。
题目要求就这么多,但是解题过程可以一点也不简单。以前我们遇到的提取问题,基本上都可以使用LOOKUP、LEN、LFET/RIGHT等函数解决。今天这道题目有一个特点,那就是提取的内容要带上计量单位。
思考十秒钟……
01
简化版的LOOKUP函数应用
既然有计量单位,那么我们就把所有的计量单位写到公式里!
在单元格B2中输入下列公式,三键确认并向下拖曳。
=LOOKUP(9E+307,--RIGHT(LEFT(A2,MIN(FIND({"ml","g","克","L"},A2&"mlg克L"))-1),ROW($1:$9)))&LOOKUP(,-FIND({"ml","g","克","L"},A2),{"ml","g","克","L"})
首先我们要找到各个计量单位在源数据中的位置。如果没有怎么办?那就写进去。
FIND({"ml","g","克","L"},A2&"mlg克L")
利用FIND函数来查找每种计量单位,返回具体的位置信息。这部分的结果是{15,19,20,21}。
MIN(FIND({"ml","g","克","L"},A2&"mlg克L"))-1
利用MIN函数,找到最小值对应的那个单位,减去1,就是数值部分的最后一位的位置。
LEFT(A2,MIN(FIND({"ml","g","克","L"},A2&"mlg克L"))-1)
利用LEFT函数将计量单位前所有的字符串都提取出来。
--RIGHT(LEFT(A2,MIN(FIND({"ml","g","克","L"},A2&"mlg克L"))-1),ROW($1:$9))
利用RIGHT函数依次提取长度为1个、2个…,9个数值,并做减负运算得到数值。
LOOKUP(9E+307,--RIGHT(LEFT(A2,MIN(FIND({"ml","g","克","L"},A2&"mlg克L"))-1),ROW($1:$9)))&LOOKUP(,-FIND({"ml","g","克","L"},A2),{"ml","g","克","L"})
最后利用LOOKUP函数的经典应用,提取到数量部分。
后半部分的公式则是利用LOOKUP函数提取计量单位。
LOOKUP(,-FIND({"ml","g","克","L"},A2),{"ml","g","克","L"})
这是LOOKUP函数的基本用法,这里不再赘述了。
02
万能版的LOOKUP函数应用
这个公式更全面,更加烧脑。
在单元格B2中输入下列公式,三键回车并向下拖曳即可。
=REPLACE(LOOKUP(99999,--RIGHTB(REPLACEB(A2,MIN(IFERROR(SEARCHB({"?ml","?g","?克","?瓶","?L"},A2),4^9))+1,99,""),ROW($1:$10)))&MIDB(A2,MIN(IFERROR(SEARCHB({"?ml","?g","?克","?瓶","?L"},A2),4^9))+1,999),1+MAX(MMULT((MID(LOOKUP(99999,--RIGHTB(REPLACEB(A2,MIN(IFERROR(SEARCHB({"?ml","?g","?克","?瓶","?L"},A2),4^9))+1,99,""),ROW($1:$10)))&MIDB(A2,MIN(IFERROR(SEARCHB({"?ml","?g","?克","?瓶","?L"},A2),4^9))+1,999),ROW($1:$20),1)={"l","g","克","瓶"})*ROW($1:$20),ROW($1:$4)^0)),999,"")
太复杂,不解释了,大家会套用即可。
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”