数据处理过程中,有时候我们需要从数据列中提取出自己想要的值,作为新的列去使用,我们来看看通过函数如何实现拆分与提取数据吧~

场景一:使用文本函数提取数据

需求1:提取订单编号中的前缀、中间、后缀部分。

函数提取数据(如何使用函数实现拆分与提取数据)(1)

分析:订单编号非常规律,前缀是6位,中间是9位-后缀是4位,可以直接使用对应的文本截取函数进行提取数据。

公式:

前缀:=LEFT(A3,6)

中间:=MID(A3,8,9)

后缀:=RIGHT(A3,4)

文本截取函数

含义

LEFT(文本,截取个数)

左截取:从文本左边截取对应个数的内容

MID(文本,开始截取的位置,截取个数)

中间截取:从文本指定位置截取对应个数的内容

RIGHT(文本,截取个数)

右截取:从文本左边截取对应个数的内容

进阶需求:订单编号中的前缀、中间、后缀的长度不一致

函数提取数据(如何使用函数实现拆分与提取数据)(2)

公式:

前缀:=LEFT(A3,FIND("-",A3)-1) —使用LEFT左截取,截取个数根据第一个“-”的位置确定。

中间:=MID(A3,FIND("-",A3) 1,FIND("-",A3,FIND("-",A3) 1)-FIND("-",A3)-1) —使用MID中间截取,截取开始的位置根据第一个“-”的位置确定,截取的个数根据第二个“-”的位置减去第一个“-”的位置的差值确定。

后缀:=MID(A3,FIND("-",A3,FIND("-",A3,FIND("-",A3) 1)) 1,10)—使用MID中间截取,

截取开始的位置,通过第2个“-”的位置来确定,通过FIND查找,查的开始位置为第一个“-”的位置加1

截取个数的数值可以写大点,超过了就已有的个数会按照已有个数取。

文本查找函数

含义

FIND/SEARCH(要查的文本, 被查的文本, 查的开始位置)

要查文本在被查的文本的第一个位置(找不到返回 #VALUE!),省略第三参数,默认为1

FIND与SEARCH的区别:

FIND— 识别大小写字母,不可以使用通配符

SEARCH— 不识别大小写字母,可以使用通配符

需求2:将数据中的单位与数字分开

函数提取数据(如何使用函数实现拆分与提取数据)(3)

公式:

单位:=RIGHT(A3,LENB(A3)-LEN(A3))—使用RIGHT右截取,截取个数等于字节长度-字符长度

数字:=LEFT(A3,LEN(A3)-(LENB(A3)-LEN(A3)))—使用LEFT左截取,截取个数=字符长度-(字节长度-字符长度)(字节长度-字符长度,其实是文字的个数,整体的个数减去文字的个数就是数字个数)

文本长度函数

含义

LEN(文本)

字符长度(一个数字、文字、符号、英文各自为1个字符)

LENB(文本)

字节长度(一个中文、标点符号都各自为2个字节,英文、数字是1个字节)

需求3:将地址中的省份、城市、详细地址分开

省份是截取地址中的省或者区的信息;城市是截取市的信息;详细地址是市后面的信息

函数提取数据(如何使用函数实现拆分与提取数据)(4)

公式:

省份:=LEFT(A3,FIND(IF(ISNUMBER(FIND("省",A3)),"省","区"),A3))

使用LEFT从左截取,截取的长度,可以根据省或者区的位置,通过FIND找,需要知道第一个参数是省还是区,通过IF判断,如果找到“省”,就是省,否则就是“区”。而find找不到把#VALUE!错误,我们通过ISNUMBER,将其变成TRUE或者FALSE。

城市:=MID(A3,FIND(IF(ISNUMBER(FIND("省",A3)),"省","区"),A3) 1,FIND("市",A3)-FIND(IF(ISNUMBER(FIND("省",A3)),"省","区"),A3))

直接使用MID中间截取,截取的位置通过市或者区的位置来确定,截取的个数根据“市”的位置减去市或者区的位置来确定。

详细地址:=MID(A3,FIND("市",A3) 1,99)

直接使用MID中间截取,截取的位置通过找“市”的位置

需求4:提取指定的字符最后一次出现后的数据

提取文本中第二列指定字符最后一次出现后的数据

函数提取数据(如何使用函数实现拆分与提取数据)(5)

方法一:将最后一个指定的字符替换成一个很大的字符(々),然后通过MID中间截取,截取开始的位置就是“々”的位置,截取个数可以写大点即可

最主要的是如何只替换最后一个指定字符将其变成(々)

将所有的指定字符替换为空,总长度-替换后的字符=查找字符的个数,个数正好是最后一个指定的字符。

=MID(A3,FIND("々",SUBSTITUTE(A3,B3,"々",LEN(A3)-LEN(SUBSTITUTE(A3,B3,"")))) 1,99)

方法二:将所有的指定字符替换为99(很多)个空格,然后右截取一个比较大的字符(包括想要提取的数据),然后进行清洗,去掉空格即可

=TRIM(RIGHT(SUBSTITUTE(A3,B3,REPT(" ",90)),90))

函数

含义

SUBSTITUTE(文本,被替换的字符,新的字符, 替换第几个)

对指定的字符进行替换

REPT(文本,重复的次数)

将文本重复一定的次数

TRIM(文本)

除了单词之间的单个空格外,清除文本中所有的空格

需求5:提取不规范日期格式中的年月日

函数提取数据(如何使用函数实现拆分与提取数据)(6)

这个比较简单,就不多说了

场景二:使用日期函数提取数据

需求1:从规范的日期分别提取对应的数据

函数提取数据(如何使用函数实现拆分与提取数据)(7)

公式

函数

含义

=YEAR(A3)

YEAR(日期)

返回日期的年份值

=MONTH(A3)

MONTH(日期)

返回日期的月份值

=DAY(A3)

DAY(日期)

返回一个月中的第几天的数值(1-31)

小时

=HOUR(A3)

HOUR(日期)

返回一个时间值中的小时数

分钟

=MINUTE(A3)

MINTUTE(日期)

返回一个时间值中的分钟数

=SECOND(A3)

SECOND(日期)

返回一个时间值中的秒数

星期几

=WEEKDAY(A3,2)

WEEKDAY(日期,周期类型)

返回日期在一周的第几天(以第二参数确定周期)

日期

=DATE(YEAR(A3),MONTH(A3),DAY(A3))

DATE(年,月,日)

返回指定的日期

月末

=EOMONTH(A3,0)

EOMONTH(日期,日期之前或之后的月份数)

返回指定日期之前或之后某个月的最后一天的日期(月底)(Months为0则当前月份)

文章虽然是实现数据的拆分与提取,但是其中基本上将常用的文本和日期函数说的差不多了,而且除了使用函数之外,一些技巧也能实现数据的拆分,比如快速填充(CTRL E)和分列,分列大家可以看这个文章Excel中强大的分列功能,常见用法你了解吗?。之前文章也讲解过如何拆分工作表(将工作表按照某个字段拆分成多个工作表),大家可以也看做数据的拆分与提取。大家有什么问题,欢迎在评论区留言~

,