- 表哥的Access入門:以Excel視角快速學習數據庫開發(第2版)
- 林書明
- 1193字
- 2021-10-29 12:01:02
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在數據管理方面的優越性。
- 深入核心的敏捷開發:ThoughtWorks五大關鍵實踐
- JMeter 性能測試實戰(第2版)
- 算法訓練營:入門篇(全彩版)
- R語言數據可視化實戰
- 游戲程序設計教程
- Instant RubyMotion App Development
- 零基礎學Python網絡爬蟲案例實戰全流程詳解(入門與提高篇)
- HoloLens與混合現實開發
- 汽車人機交互界面整合設計
- Arduino Wearable Projects
- Mastering Concurrency Programming with Java 9(Second Edition)
- Mastering VMware Horizon 7(Second Edition)
- Puppet:Mastering Infrastructure Automation
- Deep Learning for Natural Language Processing
- 讓Python遇上Office:從編程入門到自動化辦公實踐