数据处理过程中,有时候我们需要从数据列中提取出自己想要的值,作为新的列去使用,我们来看看通过函数如何实现拆分与提取数据吧 场景一:使用文本函数提取数据 需求1:提取订单编号中的前缀、中间、后缀部分。 分析:订单编号非常规律,前缀是6位,中间是9位后缀是4位,可以直接使用对应的文本截取函数进行提取数据。 公式: 前缀:LEFT(A3,6) 中间:MID(A3,8,9) 后缀:RIGHT(A3,4) 文本截取函数 含义 LEFT(文本,截取个数) 左截取:从文本左边截取对应个数的内容 MID(文本,开始截取的位置,截取个数) 中间截取:从文本指定位置截取对应个数的内容 RIGHT(文本,截取个数) 右截取:从文本左边截取对应个数的内容 进阶需求:订单编号中的前缀、中间、后缀的长度不一致 公式: 前缀: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 截取个数的数值可以写大点,超过了就已有的个数会按照已有个数取。 文本查找函数 含义 FINDSEARCH(要查的文本,被查的文本,查的开始位置) 要查文本在被查的文本的第一个位置(找不到返回VALUE!),省略第三参数,默认为1FIND与SEARCH的区别: FIND识别大小写字母,不可以使用通配符 SEARCH不识别大小写字母,可以使用通配符 需求2:将数据中的单位与数字分开 公式: 单位:RIGHT(A3,LENB(A3)LEN(A3))使用RIGHT右截取,截取个数等于字节长度字符长度 数字:LEFT(A3,LEN(A3)(LENB(A3)LEN(A3)))使用LEFT左截取,截取个数字符长度(字节长度字符长度)(字节长度字符长度,其实是文字的个数,整体的个数减去文字的个数就是数字个数) 文本长度函数 含义 LEN(文本) 字符长度(一个数字、文字、符号、英文各自为1个字符) LENB(文本) 字节长度(一个中文、标点符号都各自为2个字节,英文、数字是1个字节) 需求3:将地址中的省份、城市、详细地址分开 省份是截取地址中的省或者区的信息;城市是截取市的信息;详细地址是市后面的信息 公式: 省份: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:提取指定的字符最后一次出现后的数据 提取文本中第二列指定字符最后一次出现后的数据 方法一:将最后一个指定的字符替换成一个很大的字符(),然后通过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:提取不规范日期格式中的年月日 这个比较简单,就不多说了 场景二:使用日期函数提取数据 需求1:从规范的日期分别提取对应的数据 列 公式 函数 含义 年 YEAR(A3) YEAR(日期) 返回日期的年份值 月 MONTH(A3) MONTH(日期) 返回日期的月份值 日 DAY(A3) DAY(日期) 返回一个月中的第几天的数值(131) 小时 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则当前月份) 文章虽然是实现数据的拆分与提取,但是其中基本上将常用的文本和日期函数说的差不多了,而且除了使用函数之外,一些技巧也能实现数据的拆分,比如快速填充(CTRLE)和分列,分列大家可以看这个文章Excel中强大的分列功能,常见用法你了解吗?。之前文章也讲解过如何拆分工作表(将工作表按照某个字段拆分成多个工作表),大家可以也看做数据的拆分与提取。大家有什么问题,欢迎在评论区留言