菜鸟记650-分享一个研究半年才成功的小栗子—有唯一的字段,提取生成不规则的成绩表只需要一分钟
万一您身边的朋友用得着呢?
各位朋友早上好,小菜继续和您分享经验之谈,截止今日小菜已分享600+篇经验之谈,可以文章编号或关键词进行搜索。
微信推送规则发生改变,如果您想看到小菜每个工作日的经验之谈,请多多点开浏览、分享到朋友圈、加星标或点个赞
每日一图完毕,以下才是今天的正式内容……
摘要:本文介绍通过构建出唯一对应字段,从原始数据表中提取统计数据,生成不规则成绩表的操作案例。
关键词:excel2019;lookup函数;countif函数;iferror函数;sumproduct函数;提取数据;操作难度*****
在工作中,咱们可能还需要生成一些不规则的的表格,由于规则复杂,整理起来很麻烦;
比如今天和您分享的这个小案例,小菜整整研究了半年的时间,才终于找到了好一点点的不完美的解决方案!
要处理的工作场景是这样的,有一张这样的原始成绩数据单,小菜已经进行了取整计算和学分提取(60以上才能取得学分):
图1:成绩源数据示意图
最后生成的报表是需要分成两段式的,而且还要一个班一个PDF文件:
图2:结果示意图
细细研究一下,要从原始表中分别对应到班级,再按班级提取相应的数据,下方要进行获得学分的统计,最后再生成PDF文件;
困难在于每个班的数据量都不一样,而且没有找到一个好办法来实现自动生成的效果!
小菜开始研究这个小栗子以后,尝试了多种方法:
首先想到的是用邮件合并,但是没法解决班级字段变换的难题;
其次又尝试了VBA,很遗憾由于技术水平问题没有写出代码……
于是,迫不得已当时是用复制粘贴的方法来操作的,由于数据有几千行,您可想而知工作强度有多大,更惨的是,事后复检,发现有不少数据发生了错误……
悲伤的故事不能重复上演!
小菜痛下决心,一定要攻克这个难题,得空就拿出来看一看,断断续续学习、研究、失败、再学习了半年时间,突然某一天在地铁上灵感如泉涌,小菜突然醒悟完全的自动化不行的话,咱们能半自动实现也是极好的!
根据这个思路,小菜当天花了半个小时的时间就完成了模板的构建,请看这是最后的效果动画:
看上去是不是感觉很高级的样子?字段自动提取,而且生成的文件都在一页上显示,为后期的文件存档提供了极大的便利!
好经验不敢独享,今天和各位朋友分享,请继续向下阅读:
1-构建唯一对应字段
仔细分析要从原始表中提取到咱们所需字段,首先要能在两个表之间有字段关联;
小菜研究了很长时间,最后确定一个最简单的对应方法:利用班级加序号就能得到唯一的字段!
在原始表中按班级排序后,在辅助列中输入公式,填充后得到每个班级数据中的序号,再利用连接符得到咱们所需字段:
图 3:生成班内序号结果示意图
在成绩表中,由于分成两列数据,咱们也相应生成两列序号,同样通过连接符生成两列班级序号字段:
图 4:成绩模板生成班内序号结果示意图
小菜提示:两段式成绩模板,给数据处理造成麻烦,好在只需要构建一次即可。
为了实现动态提取效果,咱们还需要在班级单元格实现原始表中的班级呈现出来;
复制原始表中的班级列,通过删除重复值很容易得到所有的班级数据:
图 5:删除重复值效果图
选中班级单元格后设置数据有效性,有了刚才得到班级数据,可以方便地通过添加序列的方式进行即可:
图 6:设置数据有效性操作路径示意图
2-lookup函数提取数据
有了唯一对应字段,剩下的工作其实很简单了,咱们只需要用一个lookup函数套路,就可以实现需要提取什么就提取什么,所有提取字段都是一个套路公式:
比如提取学号,公式这样写:
=IFERROR(LOOKUP(1,0/(成绩!$A$2:$A$3632=报告单!K6),成绩!$D$2:$D$3632),"")
请看结果是这样的:
图7:提取数据结果示意图
小菜划重点:由于各班人数不一样,咱们需要用到Iferror函数来实现自动把错误值隐藏的效果。
3-countif函数统计成绩情况
有了数据咱们还要完成完成统计,模板要求咱们做的是重复和不重复统计的工作;
比如统计人数,咱们实际上要统计的是学号的不重复个数,公式用Sumproduct函数套路,这样写就行:
=SUMPRODUCT(1/COUNTIF(A6:A55,A6:A55))+SUMPRODUCT(1/COUNTIF(F6:F55,F6:F55))
图8:选修人数统计示意图
小菜提示:公式看着复杂,实际上就是统计学号两列数据中不重复的数据个数。
根据有学分为1,没学分为0的规则,咱们转变为统计1和0的个数就可以得到人次的统计:
=COUNTIF(E6:E55,”1”)+COUNTIF(J6:J55,”1”)
图 9:获得学分人次统计示意图
选修门次把通过和未通过的门次相加即可:
图10:选修门次统计示意图
好了,工作到此就可以实现咱们所有的功能要求,咱们再回复一下这种解决了难题的快乐,由于是提取的数据,再也不用担心眼花复制粘贴造成的错误了!
小菜划重点:今天分享的小栗子是小菜研究时间最长的,真是前前后后延续了很长时间,等解决以后再回顾,其实根源还是在于技术能力不行,潜意识里感觉如果用VBA来做的话,可以实现完全的自动化操作,不用像现在给出的其实一个半成品解决方案,还好先能解决一些问题,慢慢咱们再进步。
闲话不再多说,小菜准备买书学习新的技术了……
看到最后给小菜原创加加油?
参考文献在文末,走过路过别错过……
今天就是这些,希望小菜的分享能帮到您或有所启发,欢迎您有问题联系,为小菜提供更多思路。