万一您身边的朋友用得着呢?
各位朋友早上好,欢迎打开小菜的公众号,截止今日小菜已分享1000+篇经验之谈,可以文章编号或关键词进行搜索。
每日一图完毕,以下才是今天的正式内容……
摘要:本文介绍Mid+Find函数提取单元格信息的一个案例。
关键词:Excel2019;Mid+Find函数;If函数;Iferror函数;提取数据;两个相同分隔字符;操作难度*****
某天小菜和一个教师朋友交流工作中的一个案例,再次刷新了对不规则的单元格数据的认识;
您若觉得小菜是夸张的话请直接先看源数据:
图1:源数据
您看班级名称列为了看得清楚(估计是老板的要求),包含了授课地点、班级、教师姓名、授课时间等多个信息,完全不符合数据库一个字段只有一个信息的基本原则!
好在,里面的分隔符,也就是中文括号还带有规律性,对于这样不规则但有有点规律的数据,如何进行转换以便用于后期统计呢?
需要再次请出咱们的Mid+Find函数组合,根据大括号出现的规律来进行提取了,当然需要辅以If函数和Iferror函数这两个常用的利器;
第一个大括号包含的是上课地点信息,提取相对简单,用公式
=MID(B2,1,FIND(")",B2))
小菜提示:公式含义是从第1个字符开始提取,截止到第1个右括号位置为止。
向下填充可得:
图2:提取上课地点
在第1个和第2个大括号之间的信息是班级信息,公式写得好像有点复杂,原理都是利用Find函数来定位需要提取的位置:
=IFERROR(MID(B2,FIND(")",B2)+1,FIND("(",B2,5)-FIND(")",B2)-1),"停课待分班")
小菜提示:开始提取位数+1和截止提取位数-1,都是为了精准获取所需提取字符个数,实践中可以分别运行两个find函数,测试需要加减。
填充结果如下:
图3:提取班级信息
接下来难点来了,Find函数怎么定位第2个大括号呢?
小菜还真认真查阅了一下Find函数的语法,咱们忽略的第三参数是默认从第1位开始搜索特定字符,本例只需要从第6个字符开始查找,就都能避开第一个大括号的干扰;
公式这样写:
=IFERROR(MID(B2,FIND("(",B2,6)+1,FIND(")",B2,6)-FIND("(",B2,6)-1),"")
填充后得到如下结果:
图4:提取教师姓名
最后来到上课时间信息,都是以“周”字符为标识规律,所以公式也比较好写:
=IFERROR(MID(B2,FIND("周",B2),LEN(B2)-FIND("周",B2)+1),"停课")
小菜提示:提取多少位字符借助了整个单元格字符个数减去周出现的位数+1来实现,公式看着长,思路很清晰。
填充得到如下结果:
图5:提取授课时间
有小伙伴问了,咱们费这半天功夫写公式提取出来有什么用呢,透视表请出来啊:
图6:数据透视
需要统计哪些信息,随手可得了,比如上表哪些老师在那个开课点还有多少课程一目了然,双击就可以查阅明细!
今天咱们主要复习了Mid+Find函数这个套路,眼尖的朋友还看到小菜统计了上课时长这个信息,您知道怎么提取到的吗?
图7:统计上课时长
今天的小栗子再次说明如果数据表没有规则填写,后期会造成很多麻烦,好在还有一些技术手段来处理,不过在填写的时候一步到位就更好了(虽然老板往往不这样认为……)
参考文献在文末,走过路过别错过……
参考文献
关于Mid+Find函数的应用案例,还可以看看这些经验之谈
《菜鸟记1055-分享一个自动提醒下月生日的案例-来自工会工作朋友的问题》
《菜鸟记1030-提取单元格信息的方法有很多,能解决问题的就是好办法》
《菜鸟记655-单元格中用人工换行符填写了多个数据,如何提取?》
《菜鸟记633-怎么统计这个难倒99.99%表哥表妹的不规则表格?》
联系客服