利用组合函数实现数据的完美提取
作者:王志军
来源:《电脑知识与技术·经验技巧》2015年第11期
作者:王志军
来源:《电脑知识与技术·经验技巧》2015年第11期
最近,在工作中又遇到了从Excel工作表提取特定数据的问题,如图1所示,同事希望在C列提取“厚”和“(”之间的文字,例如C2的“150*200*1000厚福建灰麻侧石(火烧面)”提取出“福建灰麻侧石”。除了手工提取之外,有没有简单一些的方法呢?
经过分析,发现这些数据比较复杂,不仅字符串的长度不一,而且“(”和“)”的位置也不固定,无论是分列,或者Excel 2013所特有的快速填充,都无法实现同事的要求。考虑之后,决定还是利用组合函数解决这一问题,由于公式比较复杂,为便于读者更容易理解,下文通过模拟的形式分步显示公式执行的效果:
选择H2单元格,在编辑栏输入公式“=LEFT(SUBSTITUTE(MID(C2.FIND("厚",C2)+1,9),"(",REPT("",9)),9字符串截取指定字符后的文字)”,FIND函数主要是对C2单元格中的“厚”进行定位并确定其位置,“FIND("厚",C2)”返回的结果是13,由于我们是需要提取“厚”和“(”之间的文字,因此这里“+1”,表示从“厚”后面的字符开始,返回的结果是14,模拟效果如图2所示。
MID函数的作用是从C2单元格截取出指定数字的字符,“+1”表示从“厚”之后的字符开始截取,“9”这个数字应根据实际情况决定,大一些可以避免提取数据缺失的尴尬,这一步骤可以提取出“福建灰麻侧石(火烧”的结果。
REPT函数可以根据定义的次数重复显示文本,相当于复制文本,本例是复制空格;SUBSTITUTE函数用来替换指定的文本,本例是使用空格删除其中的“(”,之所以设置为“9”主要是为了统一字符串的长度,这一步骤可以获得“福建灰麻侧石火烧”的效果,其中的空格就是替换“(”之后的后遗症,模拟效果如图3所示,可以看到这里的空格字符和“)”,由于提取数据并不涉及“)”,因此公式中并未对“)”进行处理,当然这不会影响最终的提取效果。
由于我们只是需要提取“厚”和“(”之间的字符,因此这些空格存在与否并不重要,最后使用LEFT函数提取指定字符即可,从第一个字符开始返回指定个数的字符,这里设置为“9”,主要是取决于C列的实际情况,请将其设置为“厚”和“(”之间的最长字符数量,否则会出现字符缺失的情况。
公式执行之后,可以从C2单元格提取出“福建灰麻侧石”的结果,向下拖拽或双击填充柄,
最终可以看到图2所示的效果。如果不需要保留多余的空格字符,使用替换的方法删除即可,但可能需要辅助列才能实现。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论