怎么从一串文本中提取出想要的部分?

如下图所示,A列是一些包含了很多信息的字符串,现在要将红色字体的品牌部分提取出来,结果如B列所示。如果让你来做,你会如何解决呢?

观察一下,我们就可以发现,数据源很有规律:不同信息之间用分号分隔,内部之间又用冒号分隔。提取的方法还是有挺多的,我来分享3种方法。

方法1:
在B2单元格输入下面的公式,下拉填充。

=TRIM(LEFT(SUBSTITUTE(MID(A2,FIND("品牌:",A2),99),";",REPT(" ",99)),99))

FIND("品牌:",A2)这部分用find函数查找“品牌:”在A2单元格中的位置,返回32。MID(A2,FIND("品牌:",A2),99)这部分用mid函数从A2单元格的第32个字符开始提取,提取的长度是99,返回的结果为"品牌:TPR;零件号:TP322500-0"。

SUBSTITUTE(MID(A2,FIND("品牌:",A2),99),";",REPT(" ",99))这部分用substitute函数将"品牌:TPR;零件号:TP322500-0"这个字符串中的分号替换为99个空格。

REPT(" ",99)这部分是用rept函数将空格重复99次,那当然就是99个空格了。

LEFT(SUBSTITUTE(MID(A2,FIND("品牌:",A2),99),";",REPT(" ",99)),99)这部分用left函数将替换后的字符串从左边截取99个字符。这样肯定会有多余的空格,所以最后用trim函数将多余的空格去除。

方法2:
在B2单元格中输入下面的公式,下拉填充。

=MID(A2,FIND("品牌:",A2),FIND(";",A2,FIND("品牌:",A2))-FIND("品牌:",A2))

这个公式我只说下思路吧,就不一步一步的拆解公式了。主要是用mid函数提取,首先要找到提取的起始位置,然后再计算出提取的长度。

起始位置可以用find函数找"品牌:"在A2中的位置,比较简单。提取的长度就稍有一点繁琐,是用"品牌:"之后的第1个分号的位置减去"品牌:"的位置。

"品牌:"之后的第1个分号的位置是FIND(";",A2,FIND("品牌:",A2))这部分。还是用find函数找分号的位置,只不过不是从开始找,而是从"品牌:"之后的位置开始找。

方法3:

在B2单元格输入下面的公式,下拉填充。

=FILTERXML("<a><b>"&SUBSTITUTE(A2,";","</b><b>")&"</b></a>","a/b[starts-with(.,'品牌:')]")

这个公式用的是filterxml的分列用法,以分号为分隔符进行分列,这样就将字符串分成了几部分。然后再筛选出以"品牌:"开头的那部分,就得到最终的结果。

公式中红色的部分就是之前分享过的分列用法,不了解的小伙伴可以看《分列提取你还在用老套路吗?该尝试个新套路了。》这篇文章。

[starts-with(.,'品牌:')]蓝色这部分可以看作筛选的条件,从所有的b元素中筛选出以"品牌:"开头的那些。starts-with是xpath中自带的函数,有2个参数,用来判断第1参数的字符串是否以第2参数的字符串开头。

power query中也有相同功能的函数,学过pq的小伙伴很容易理解。

最后补充个vba代码的方法:
代码如下:
Sub 提取品牌() Dim rng As Range, i As Integer Dim arr As Variant, em As Variant i = 2 For Each rng In Range("a2:a5") arr = Split(rng.Value, ";") For Each em In arr If em Like "品牌:*" Then Cells(i, "b") = em Next i = i + 1 NextEnd Sub
文件链接:

https://pan.baidu.com/s/1S0KiUnJnMIJwSfJHiaA0IA

提取码:5dqb
(0)

相关推荐

  • 脑洞大开,Excel用99+空格来提取单元格数据,你用过吗?

    [温馨提示]亲爱的朋友,阅读之前请您点击[关注],您的支持将是我最大的动力! 哈喽大家好!我是[Excel与财务]小编阿钟老师,一名70后财务男,今天分享的也是一个有意思的教程. 在Excel中,从单 ...

  • 从分隔符连接的字符串中提取子字符串

    有时候,在工作表单元格中有一些以某分隔符连接的字符串,如图1中的单元格A1,其内容是以逗号连接城市名. 图1 如果我们想要提取其中的某个城市,例如第8个子字符串表示的城市名,则可以使用下面的公式: = ...

  • 如何统计带分隔符的字符串中不重复的子字符串数?

    Q:某些情况下,我们可能要统计带有分隔符的字符串中不重复的子字符串数.如下图1所示,我想知道单元格A1中不重复的数字有几个,应该怎么编写公式? 图1 A:下面的数组公式可以完成单元格A1的字符串不重复 ...

  • 从含有数字的文本字符串中提取出数字

    我的工作表中有许多含有数字的单元格,我想将数字单独提取出来.如下图1所示,将列A的单元格中的数字提取出来放置在列B中,应该如何编写公式呢? 图1 可以使用数组公式: =1*MID(A1,MATCH(T ...

  • 杂乱文本中提取信息,ctrl+E还没有智能,power query一个函数搞定

    杂乱文本中提取信息,ctrl+E还没有智能到随心所欲,而且,实际工作中,这种操作往往不仅仅是为了提取信息,而是希望提取出来后跟其他的内容一起进行相关的分析. 所以更推荐使用新功能power query ...

  • 数据对比!从所有名单中提取出未经核酸检测的名单

    你好,我是刘卓.欢迎来到我的公号,excel函数解析.今天来分享一个数据对比(查找)的案例.现在有两份名单,一份是所有人的名单,另一份是已经核酸检测过的名单.要求是对比这两份名单,提取出未经核酸检测的 ...

  • Excel 公式:从文本中提取数字

    首先看一下实例图片,在一串文本中,数字有可能在文本的开始处.结尾处或中间. 现在针对这三种情况,给出三种提取数字公式. 数字在文本开始处 这种情况提取数字相对简单些,以下是通用公式: =-LOOKUP ...

  • PQ实战 | 文本中提取数值并求和

    Power Query(以下简称PQ)为了数据清洗提供了大量的函数,基本可以处理日常的各种"脏"数据! 今天我们就来解答一位网友的问题,那就是如何提取一段文本中的数值,并求和,在P ...

  • 如何从文本中提取特征信息?

    虽然之前也写过gensim库的word2vec的教程,但是对于文本分析的特征提取并不太理解.最近看了几篇scikit的外文教程,对机器学习中文本的特征提取有了一些了解. 首先做文本的机器学习(自然语言 ...

  • 泰特新展“朵拉·玛尔”从一个男人的阴影中提取出作为艺术家的她

    20世纪30年代,朵拉·玛尔(Dora Maar)拍摄的那些颇具争议的蒙太奇照片成为了当时超现实主义的著名标志. Untitled (Hand-Shell) 1934copyright: Centre ...

  • excel如何快速从房间号中提取出单元号

    在excel中如何快速从房间号提取出单元号呢? 如图所示,打开"客房统计表"数据表,含有"房间号"及"消费金额"等信息,现在我们需要根据房间 ...

  • excel如何从商品编码中提取出货号

    在excel中如何根据商品编码提取出商品货号呢? 如图所示,打开"商品信息记录表"数据表,含有"商品名称"及"商品编码"等信息,现在我们需要 ...