【一个真实的案例】这么复杂的数据处理工作现在也可以不用编程轻松完成了

今天介绍一个真实的案例。这个案例是n年前有客户问的一个问题。当时我是写了个程序来实现这个功能。现在看,其实有更好的方法。

01

先来看看问题

客户有这样的一些数据:

这些数据记录的是每个文件对应的时长,其中A列是文件名,B列是时长。这样的表格有四个:A,B,C,D,四个表的结构是一样的。

客户的要求也很简单:

客户要求根据前面的四个表格中的内容,生成这个表格,要求第一列是各个表格不同文件名的排列组合,第二列是这种排列组合对应的时间之和,第三列是这个合计时间的分钟数。

仔细分析,这个要求有两个要点或难点,第一个是如何实现四列数据的排列组合。第二个是个隐含的难点。大家仔细看原数据中第二列的内容,看上去都是时:分:秒的形式,但是列标题却是分:秒。经过询问客户才知道这是由于采集数据时的错误设置导致把应该是分:秒的数据变成了时:分:秒的格式,也就是说看上去是10:30:00(10小时30分钟)的数据实际上是00:10:30(10分钟30秒),因此,在处理数据时需要考虑这个转换。

02

实现方法

这个问题用传统的Excel技术没有太好的解决方法。当时我对Power Query理解的不太深入,因此我写了一段程序来处理这个问题。程序本身也不复杂。不过用程序处理有很多陷阱,老实说不是一个好的解决方案。

后来,随着我对Power Query理解的越来越多,慢慢意识到有很多这种传统上必须写程序解决的问题都可以使用Power Query来实现。下面就介绍一下这个案例的实现过程。

首先,我们将表A导入到Power Query中。

选中工作表A中的表格区域任意单元格,点击“数据”选项卡中的“从表格”:

将表A导入到Power Query中:

可以看到,Power Query直接将第二列转成了小数。这个小数实际上就是按照Excel中的时间跟数值的转换规则转变而成的。

但是根据我们对原数据的理解,这个数据本身就是错误的,需要进行转换处理。

在“添加列”选项卡中,点击“自定义列”:

按照如下对话框中的方式定义该列:

由于原数据中错误的把分钟变成了小时,秒变成了分钟,整体变大了60倍,所以除以60可以恢复

得到结果:

删除原来的分:秒列(第二列):

在右侧查询设置面板中,将名称修改为“表A”:

点击“主页”选项卡中的关闭并上载至:

选择仅创建连接:

点击加载,完成查询的创建。

同样,为B,C,D创建查询,并分别命名为表B,表C,表D。

03

完成最后结果

在“数据”选项卡中,点击创建查询,点击从其他源众多的空白查询:

自动进入Power Query编辑器:

在公式栏中输入:=表A

按回车,得到表:

在“添加列”选项卡下,点击“自定义列”,在对话框中输入公式:=表B,

点击确定后,得到:

同样的方式,添加两个自定义列,分别是表C,表D:

点击第三列(自定义)列标题右侧的按钮,

在对话框中选择所有列:

点击确定,

同样的方式,展开其余两个自定义列:

选中所有的文件名列(按住Ctrl键用鼠标点选),在“转换”选项卡下点击合并列:

在对话框中,按如下方式设置:

点击确定,得到结果:

在“添加列”选项卡下,点击自定义,在对话框中按照如下方式设置:

点击确定,得到结果:

将该列转换为持续时间:

得到结果:

删除除“文件组合”和“时长”的其他列,并调整列的顺序:

点击“主页”选项卡中关闭并上载,得到结果:

大功告成!

04

总结
这个步骤看起来很长,其实主要是因为需要写出来有很多截图。如果只把步骤列出来,其实很短。大家做一下就会发现还是比较简单的。整个过程中没有什么复杂的东西。
有人认为还不如写程序方便呢,这个怎么说呢,就不说那些没有编程基础的朋友了。就拿我这个还算是有着丰富的编程经验的人来说,我宁愿用Power Query来完成大部分工作,尽管不一定逼着编程快很多(当然,多数情况下,还是Power Query快)。但是与编程比,Power Query的主要优势在于后期维护非常容易。
这个过程大家通过我们的这些案例相信都比较熟悉了,所有的工作都被拆分成一个一个动作,后面如果需求的逻辑改变了,只要改变其中某些步骤就可以了。这一点是编程不能比的。如果你想写出一个后期维护简单的VBA程序,对开发者的要求不是一般的高,对于那些比较复杂的应用,这个难度高过通过VS,Python等开发工具的难度。
最后,我这个案例还留下了一个小尾巴,没有计算以分钟计算的时长。大家可以自己实现一下。

关注本公众号,点击底部菜单“联系客服”,与客服取得联系,索取“派列表”案例文件

END
关注ExcelEasy
关于Excel的一切问题,你都可以在这里找到答案
(0)

相关推荐

  • POWER QUERY--多个工作簿的合并汇总(一)

    送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 在实际工作中,最让人头疼的是大量工作簿的汇总.例如,有20个工作簿,保存有20个分公司的工资数据.每个工作簿中有 ...

  • 认识Power Query的自定义函数

    使用Power Query进行复杂一些的数据处理,离不开M函数,目前已经有超过700个函数了,基本上各式各样的数据处理需求都可以使用M函数实现,如果你觉得这些还不够,或者使用起来不是很方便,也可以在P ...

  • 如何删除 Excel 表格中的所有重复行?4 种方法都很简便

    如果数据表的某一列中有重复单元格,要去重还是比较容易的,但是如果数据表中存在所有单元格完全重复的行,如何快速找到这些重复行并且去重呢? 案例: 下图中的数据表分别有两对完全重复的行,请删除所有重复行. ...

  • 快速合并多工作表数据

    今天咱们说说合并工作表. 不管报表分布在多少个表中,都可以快速合并在一起,并能够实时更新数据. >>>教程开始<<< 1.准备数据源 每一年的数据存放在不同的工作表 ...

  • Power Query 数据丰富,依然轻松搞定!

    上一篇文章都是在原表数据基础上的分分合合,但做数据分析的时候还经常需要在原有数据的基础上增加一些辅助数据,比如加入新列.新行,或者从其他表中添加进来更多维度的数据,这些就是数据丰富的过程. 01 添加 ...

  • Excel教程:Power Query,万能的批量数据替换技巧!

    每天一点小技能 职场打怪不得怂 编按:说到Excel的替换操作,大家首先想到的一定是SUBSTITUTE和REPLACE函数.可是,今天需要处理的替换问题,这两个函数也束手无策,那要怎么做呢?下面,小 ...

  • POWER QUERY--向表添加新列

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 原始数据表单的字段不一定能够满足用户的需求,很多情况下需要添加新列(计算列 ...

  • 山东济南算命准的师傅,实测案例:性格自卑,工作易犯小人的八字

    梦缘易八字实断/文 案例:师傅你好,我最近很困惑,我是个从医者,在工作上遭人投诉,小人落井下石,工作进入低谷,心情十分沉闷,我总是在不断地反思我的不足,怎么提高自己的技术,怎么避免事故等等一系列的问题 ...

  • 女人脱发严重怎么治?一个真实的案例故事!

    女人都是爱美的人,所以女人都很注重自身的保养,尤其对头发的保养.女人拥有一头乌黑亮丽的头发,走出去多羡煞旁人.只是,如果女人脱发了,就大问题了.那么女人脱发怎么办呢?下面和我一起看看夏女士的防脱故事吧 ...

  • 职场案例 丨 先回老家找工作找女朋友,还是先找女朋友在回老家找工作?

    学员咨询:我14年毕业进入一家国企公司,原以为能一直安稳工作,做到自然退休.但是随着时间推移,我从一名操作工变成了主控技术员.工作到现在5年了,个人感觉工作上没有上升空间,生活中一直没有对象,还没有成 ...

  • 高考严防志愿滑档,一个真实的案例告诉你怎么做

    高考严防志愿滑档,一个真实的案例告诉你怎么做 原创2021-06-27 14:41·老白的文酱 考生成绩出来了,各省控制线也发布了,连同控制线发布的还有各省高考一分一段的详情表.现在,从27号开始,全 ...

  • 维修案例丨福特仪表盘无法工作,千万注意防护!

    车型:福特蒙迪欧致胜 配置:2.3L发动机和自动变速器 行驶里程:约14000m 故障症状:车主反应,该车发动机启动着车后,仪表板中的所有仪表都不工作. 诊断与检修:验证故障现象,仪表不工作且音响系统 ...

  • 维修案例丨速腾右前门玻璃升降器工作异常!

    车型:速腾2010年款车型 行驶里程:约7000km 故障症状:打开点火开关,操作驾驶员侧的主控开关,结果不能控制右前门玻璃升降器的运行,但右前门的玻璃升降器开关能控制相应电机的运行,其他玻璃升降器工 ...

  • 奇门遁甲案例——什么时候能找到工作求测者...

    奇门遁甲案例--什么时候能找到工作 求测者:求测最近啥时候能找到工作?男,2000年出生 通过奇门遁甲起卦测算,结果分析如下: 1.在奇门局中,日干为丁代表你,时干也为丁,代表你问的这件事,丁落离宫处 ...

  • 从一个案例分析来看我们的工作

    作为HR在目前这种工作形势下,企业今年要完成的目标任务是无从谈起,而HR更要重视对员工的关怀管理,团结一致,共渡难关,我们要时时提防不能因为一些小事影响企业生产大局,越是在这样的情况下,我们HR越要遵 ...