我们经常面临着要从数据源中提取某部分基础数据的问题。今天介绍从我们的生产记录数据源中提取各工序的标准工时。
因为工厂的ERP系统没有工序管理/工艺管理,所以该系统中没有产品工序的信息,包括工序标准工时。工厂也没有形成一个独立的工序标准工时数据源,而是将其记录到每日生产过程记录的事实表中。因此,我们需要从生产过程记录事实表中将工序工时信息提取出来,方便以后对工时的使用需求。
操作步骤如下:
1. 引用查询
首先,在Power Query编辑器左边的查询导航窗格中,右键单击查询“Worksheet筛选”,选择“引用”,这样就建立了一个基于第一个查询“Worksheet筛选”的新查询。我们将新查询重命名为“工序工时”。
2. 提取前四行数据
点击Data列的Table,在下方窗口发现,数据源的前四行包含了工序工时相关信息。因此,我们需要提取前四行的数据。
数据源包含很多个工作表,即Table,那么,如何提取每个每个Table前几行的数据呢?我们可以通过插入一列只保留前四行的的新Table来实现。
操作步骤:添加列-自定义列-在弹出对话框的“自定义列公式”下面输入以下公式并确定。
=Table.FirstN([Data],4)
3. 删除不需要的列
图3下方显示了提取的前四行数据,但是我们看到前六列数据是不需要的,因此需要将其删除。
操作步骤:添加列-自定义列-在弹出对话框的“自定义列公式”下面输入以下公式并确定。
=Table.RemoveColumns([自定义],{"Column1","Column2","Column3","Column4","Column5","Column6"})
4. 转置
接下来我们需要将上方处理后的工作表进行行列转置。
操作步骤:添加列-自定义列-在弹出对话框的“自定义列公式”下面输入以下公式并确定。
=Table.Transpose([自定义.1])
5. 将第一行用作标题
因为新Table的第一行是标题,因此我们将其提升为查询中被认可的标题。
操作步骤:添加列-自定义列-在弹出对话框的“自定义列公式”下面输入以下公式并确定。
=Table.PromoteHeaders([自定义.2])
6. 展开数据
至此,数据的前期处理就差不多了。我们在展开需要的数据之前,先把不需要的数据列删除。
选中第1列和最后一列“自定义.3”,点击右键,在弹出的菜单中选择“删除其他列”。
点击“自定义.3”标题行右边的图标,在弹出的对话框中,取消勾选“使用原始列名作为前缀”,确定。这样各个数据表的工序工时数据就被合并在一起了。
7. 重命名
双击展开后的数据最后一列的标题,重命名为“工序号”。
8. 填充
由于第2列“车缝组件”有很多空行,空行的内容应该跟上方的内容一致,所以我们对第2列进行向下填充。
操作步骤:选择第2列,依次点击-转换-填充-向下
哈哈,大功告成,所有工序及工时的信息就被提取出来了。点击开始-关闭并上载的小三角-关闭并上载至,在弹出的对话框中选择“表”、“新工作表”,取消勾选“将此数据添加到数据模型”,即可上载回Excel工作表啦!