![表哥的Access入门:以Excel视角快速学习数据库开发(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/938/41202938/b_41202938.jpg)
2.1 拆分数据表
小饭馆的一份客户订单如图2-1所示。面对这份客户订单,观察“所定菜品”列中的内容。在这里,表示菜品名称的文本和表示菜品价格的数字混合在同一个单元格内,Excel根本无法对其进行自动数据汇总计算,我们必须将能够参与计算的数字和不能参与计算的文本分开。
![img](https://epubservercos.yuewen.com/140A4B/21440187408278606/epubprivate/OEBPS/Images/txt002_1.jpg?sign=1739146077-Wu0Az55iiPsMJb3znechge6ApjB065ay-0-9b208a52d480a9d89adbe4b8467d41f9)
图2-1
首先对客户订单的“所定菜品”列中的内容进行拆分,将其处理成如图2-2所示的表。为了和被拆分的表建立关联关系,我们在拆分出来的表中包含了“订单编号”列。这样,我们就可以以订单编号为关联项,到拆分出来的所定菜品表中查找该订单编号下的所有菜品了。
![img](https://epubservercos.yuewen.com/140A4B/21440187408278606/epubprivate/OEBPS/Images/txt002_2.jpg?sign=1739146077-grErMbMUvTd2MCaHbIjzvKvh0dbjH3Rc-0-3f5e7c2aa6abe844462f73ef1e2dfb5e)
图2-2
然后,将“所定菜品”列中的“数量”分离出来形成单独一列,如图2-3所示。
在图2-3中,由于“订单编号”列中的合并单元格在Excel中不便于进行筛选、分组等常见的数据分析操作,因此需要对“订单编号”列进行处理,处理结果如图2-4所示。
![img](https://epubservercos.yuewen.com/140A4B/21440187408278606/epubprivate/OEBPS/Images/txt002_3.jpg?sign=1739146077-Y3ygfJLwCsNviMkPFRYIVN4rw1RjBuxO-0-97e695bded1b93e79c6f0301a223d8a4)
图2-3
![img](https://epubservercos.yuewen.com/140A4B/21440187408278606/epubprivate/OEBPS/Images/txt002_4.jpg?sign=1739146077-Qufm5zRD6kqkgvhwrL3rOZrZk3v9l5Cc-0-bec4cfa02cb48743c17ca14a2600d889)
图2-4
现在,有了改造后的每个订单编号下所定菜品及其份数的表,结合图2-5所示的小饭馆菜品价目表(菜单),就可以利用Excel中的VLOOKUP()函数将每种菜品的单价“抓取”到图2-5所示的表中。
![img](https://epubservercos.yuewen.com/140A4B/21440187408278606/epubprivate/OEBPS/Images/txt002_5.jpg?sign=1739146077-CW42RAqDgwHwtpLtVornQelrLtr60mw0-0-e6257dff1f7394e9ad623ba7e3344933)
图2-5
在此基础上,我们还可以添加新的一列,用于计算每种菜品的“金额小计”(根据“份数×单价”),如图2-6所示。
![img](https://epubservercos.yuewen.com/140A4B/21440187408278606/epubprivate/OEBPS/Images/txt002_6.jpg?sign=1739146077-4LNBroCJ5IJzBrq4F3OcKQqHcY5qgOIj-0-1cce2089c1e1b7c9a9c2cce5482b64c3)
图2-6
将原始客户订单表中每份订单“所定菜品”列中的内容拆分出来并整理成图2-6中的格式。接下来,为了得到理想中的便于进行数据汇总的表,我们可以将两个表根据“订单编号”列进行关联,将拆分开的数据重新组合到一起,形成一个大表,如图2-7所示。
![img](https://epubservercos.yuewen.com/140A4B/21440187408278606/epubprivate/OEBPS/Images/txt002_7.jpg?sign=1739146077-thK84OT5yUni83bhjQfeBqUab1ezms91-0-f5c042c78865a9c76652d3825f07a27f)
图2-7
去除合并单元格,整理形成如图2-8所示的表。
![img](https://epubservercos.yuewen.com/140A4B/21440187408278606/epubprivate/OEBPS/Images/txt002_8.jpg?sign=1739146077-ItnP1sTZv4PQPfEoBuS67KUSVculMmLH-0-9db6f5907feb09a31c06fedcd831cb6f)
图2-8
这里我们发现,作为两个表的关联列,同为“订单编号”列的第6列和第1列内容重复,此时,第6列已经完成了它的历史使命,可以不要了。最后,我们整理出来的“理想中的表”如图2-9所示。
![img](https://epubservercos.yuewen.com/140A4B/21440187408278606/epubprivate/OEBPS/Images/txt002_9.jpg?sign=1739146077-J0q1bk9MkkE38b2bhWbcjxAiZepAvUtq-0-5b98854fafa58d341eb7959f6ec5a20c)
图2-9
综上所述,小饭馆中订单编号为DD-00012的客户订单的整个拆分组合过程如图2-10所示。
![img](https://epubservercos.yuewen.com/140A4B/21440187408278606/epubprivate/OEBPS/Images/txt002_10.jpg?sign=1739146077-z5KsCylkMJaxTZ7i5CQ3LucLvEJqKuju-0-990d367b034ade44ca05f889e89e8fa3)
图2-10
下面继续以订单编号为DD-00012的客户订单为例,讲解如何将客户订单拆分组合成便于进行数据汇总的格式。如果对所有客户订单进行拆分,其拆分过程如图2-11所示。
在图2-11中,首先,将小饭馆的原始客户订单表拆分成“T1订单编号”表和“表2”,然后,将“表2”进一步拆分成“T2订单详情”表。
由于小张在设计记录小饭馆业务的Excel表时,未能预料到将来数据汇总的复杂需求,因此造成了现在的问题,最终不得不对已有数据进行规范化处理。但值得庆幸的是,这只是一次性的工作。在规范化处理工作完成后,新增的数据就可以按照规范化后的方案进行管理了。
![img](https://epubservercos.yuewen.com/140A4B/21440187408278606/epubprivate/OEBPS/Images/txt002_11.jpg?sign=1739146077-AwFo2tYETr9VOSATSY71Hpd04XdjYr0k-0-9c3a350c457630ce4d9ac84350e87a09)
图2-11
参照图2-11,在数据规范化处理工作完成后,我们得到了新的“T1订单编号”表和“T2订单详情”表,接下来的问题(本书重点讨论的问题之一)是如何利用计算机,以“T1订单编号”表和“T2订单详情”表为基础,整理出我们所期望的、便于进行各种数据分析的“理想中的表”?
作为对比,我们介绍两种方案,一种是Excel方案,一种是Access方案。通过学习这两种方案,我们会亲身感受Excel和Access的差异,以及Access在数据管理方面的优越性。