跨工作薄相同结构相同结构销售数据工作表汇总
1、下图中的三个工作薄中分别存放着2010、2011、2012年度各个月份的销售数据,每个年度有12个月份的工作表,总共36张工作表,现在需要将位于不同工作薄中的36张工作表汇总到一块。

2、观察每个月销售明细表的结构是相同的,每个工作表的左侧前两列均为文本,这迷撞笸痉两列文本在汇总中是必须要使用的,因此不能使用多重合并计算数据区域数据透视表进行汇总,如果每个工作表的禾韧喹缎左侧只有一列文本可以使用。如果使用函数进行汇总,一般需要满足所有的需要汇总的工作表存放在同一个工作薄中,但是这三年的36个工作表分别存放在三个不同的工作薄中,因此也不适合用函数进行汇总。

3、在这种情况下最合适的汇总方式是通过导入外部数据加sql语句的方法进行汇总,我们可以先将每一年的十二个月的销售数据表堆积在一起(堆积不是汇总,而是逐条将数据统一存放),分别堆积存放在2010、2011、2012为名称的工作表中,这三个工作表位于同一个工作薄,我们可以通过导入外部数据加sql语句的方式来进行操作。


5、在导入数据对话框中直接点按编辑查询按钮,此时会弹出编辑OLE DB查询,下面命令文本框中需要输入sql语言,为了方便编辑,可以新建一个记事本,在记事本中输入如下内容:select '1月' as 月份,* from [1月$] union allselect '2月' as 月份,* from [2月$] union allselect '3月' as 月份,* from [3月$] union allselect '4月' as 月份,* from [4月$] union allselect '5月' as 月份,* from [5月$] union allselect '6月' as 月份,* from [6月$] union allselect '7月' as 月份,* from [7月$] union allselect '8月' as 月份,* from [8月$] union allselect '9月' as 月份,* from [9月$] union allselect '10月' as 月份,* from [10月$] union allselect '11月' as 月份,* from [11月$] union allselect '12月' as 月份,* from [12月$]



7、可以看到在sheet1中已经将2010年每个月的销售数据表中的数倌栗受绽据堆积到了sheet1中,一共七百八十条数据,刚才输入的sql傥态尬锪语句中的'1月' as 月份的作用是创建一个叫做月份的字段,然后将1月为月份字段赋值,记得这个值需要用单引号括起来,字段和字段之间需要用都好连接,*代表所有的字段数据信息。from [1月$]的意义是数据来自1月这张表,。union all的作用是链接其他表数据。



9、然后在记事本中输入如下所示的一段sql语句,用上面的方法将这三年的数据通过导入外部数据的方法进行操作,到编辑OLE DB查询时,将记事本中刚才书写好的sql语句复制到命令文本框中,然后点按确定,此时会返回导入数据对话框,点选新建工作表,然后点按创建数据透视表,在弹出的数据透视表和数据透视图向导 3步骤之3中点选新建工作表,然后点按完成。


