小勤:大海,为什么我从Excel文件夹导入的数据重复了?
大海:数据给我来试试看?
Step-01:新建查询-从文件夹
确定后,我们看到文件夹里有3个文件:
这里,显然是因为将合并工作表和数据源放在了同一个文件夹下,所以Power Query将合并工作表也显示了出来,并且,还有一个前面带“~$”的合并工作表,是因为合并工作表当前打开状态,生成了一个临时文件。所以在后续编辑查询的时候我们首先要把合并工作表的内容过滤掉,否则以后刷新数据时会连合并工作表的数据一起导入。
Step-02:编辑,筛选去除合并工作簿
通过这样筛选,保证后续进入Power Query的只有自己希望导入的工作簿。
Step-03:添加自定义列,读取工作簿数据,公式=Excel.Workbook([Content])
Step-04:展开table数据
展开后我们又看到了3个表,可源数据里明明只有一个表。
实际上,在Excel里虽然只有一份数据,但因为做了不同的处理,生成了多种对象(可以简单理解为以多种形式存在),比较容易碰到的有以下三种情况:
- Sheet:工作表,就是最原始的数据;
- Table:表格,经过【插入“表格”】或【Ctrl T】或【套用表格格式】或【添加到数据模型】或【“从表格”新建查询】等等方式,使原始的普通的工作表数据装换成的“表格”,有些文章里,作者为了避免与普通工作表的差别,称之为“超级表”。生成“表格”后,当鼠标选中表中的任意数据时,菜单中会出现“表格工具“菜单,也可以在“公式/名称管理器”中查看到。
- DefineName:通过“定义名称”定义的引用区域,可以在名称管理器里查看到。
Table 和DefineName的情况在Excel中可通过以下方法识别(以下2图不是本文涉及的数据导入操作步骤):
了解这些内容之后,我们就可以按需要去选择数据以避免重复了。
Step-05:选择Sheet类别的工作表
经过这样的筛选后,我们最终导入的数据就只有该工作簿中最原始的工作表数据,后续的操作就没有什么差别了,我们继续完成它。
Step-06:展开数据
Step-07:将第一行提升为标题行
Step-08:删除不需要的列
Step-09:删除不需要的空行
Step-10:数据上载
小勤:原来Excel里还隐藏了这么多东西!
大海:是的,即使看上去是同一份数据,实际上Excel为了适应你各种不同的需要,系统内自动生成了多种对象,就像复制了好多份让你去用一样,这些内容在通过Power Query或者VBA或者做系统开发(如导入导出Excel表)做更深层次的应用时,就需要有所注意。
小勤:嗯。知道了。好在从Power Query的每个步骤里出来的结果都是看得见摸得着的东西,还比较容易理解,只需要操作上注意筛选一下就行了。