2.1 拆分数据表
小饭馆的一份客户订单如图2-1所示。面对这份客户订单,观察“所定菜品”列中的内容。在这里,表示菜品名称的文本和表示菜品价格的数字混合在同一个单元格内,Excel根本无法对其进行自动数据汇总计算,我们必须将能够参与计算的数字和不能参与计算的文本分开。
图2-1
首先对客户订单的“所定菜品”列中的内容进行拆分,将其处理成如图2-2所示的表。为了和被拆分的表建立关联关系,我们在拆分出来的表中包含了“订单编号”列。这样,我们就可以以订单编号为关联项,到拆分出来的所定菜品表中查找该订单编号下的所有菜品了。
图2-2
然后,将“所定菜品”列中的“数量”分离出来形成单独一列,如图2-3所示。
在图2-3中,由于“订单编号”列中的合并单元格在Excel中不便于进行筛选、分组等常见的数据分析操作,因此需要对“订单编号”列进行处理,处理结果如图2-4所示。
图2-3
图2-4
现在,有了改造后的每个订单编号下所定菜品及其份数的表,结合图2-5所示的小饭馆菜品价目表(菜单),就可以利用Excel中的VLOOKUP()函数将每种菜品的单价“抓取”到图2-5所示的表中。
图2-5
在此基础上,我们还可以添加新的一列,用于计算每种菜品的“金额小计”(根据“份数×单价”),如图2-6所示。
图2-6
将原始客户订单表中每份订单“所定菜品”列中的内容拆分出来并整理成图2-6中的格式。接下来,为了得到理想中的便于进行数据汇总的表,我们可以将两个表根据“订单编号”列进行关联,将拆分开的数据重新组合到一起,形成一个大表,如图2-7所示。
图2-7
去除合并单元格,整理形成如图2-8所示的表。
图2-8
这里我们发现,作为两个表的关联列,同为“订单编号”列的第6列和第1列内容重复,此时,第6列已经完成了它的历史使命,可以不要了。最后,我们整理出来的“理想中的表”如图2-9所示。
图2-9
综上所述,小饭馆中订单编号为DD-00012的客户订单的整个拆分组合过程如图2-10所示。
图2-10
下面继续以订单编号为DD-00012的客户订单为例,讲解如何将客户订单拆分组合成便于进行数据汇总的格式。如果对所有客户订单进行拆分,其拆分过程如图2-11所示。
在图2-11中,首先,将小饭馆的原始客户订单表拆分成“T1订单编号”表和“表2”,然后,将“表2”进一步拆分成“T2订单详情”表。
由于小张在设计记录小饭馆业务的Excel表时,未能预料到将来数据汇总的复杂需求,因此造成了现在的问题,最终不得不对已有数据进行规范化处理。但值得庆幸的是,这只是一次性的工作。在规范化处理工作完成后,新增的数据就可以按照规范化后的方案进行管理了。
图2-11
参照图2-11,在数据规范化处理工作完成后,我们得到了新的“T1订单编号”表和“T2订单详情”表,接下来的问题(本书重点讨论的问题之一)是如何利用计算机,以“T1订单编号”表和“T2订单详情”表为基础,整理出我们所期望的、便于进行各种数据分析的“理想中的表”?
作为对比,我们介绍两种方案,一种是Excel方案,一种是Access方案。通过学习这两种方案,我们会亲身感受Excel和Access的差异,以及Access在数据管理方面的优越性。