Day 21: 數據清洗與解析

Pagination 與 Buffer 管理挑戰

解析「ABC123 資料整理工具」操作核心
處理終端系統不規則文字的實戰策略

今日議程 (Agenda)

  1. 痛點剖析:傳統終端機分頁資料的困境。
  2. 核心概念:Buffer 管理與 Pagination 串接。
  3. 工具實作:ABC123 資料整理工具拆解。
  4. 清洗策略:Copy vs. Copy Add 的奧秘。
  5. 結構化轉換:從不規則文字到乾淨清單。

實務痛點:黑底綠字的逆襲

在金融或大型企業的後台作業中,我們經常面對 IBM 終端機 (Terminal) 或類似的遺留系統 (Legacy System)。

問題點: 這些系統為了適應早期螢幕,資料輸出高度受限於「畫面尺寸」。

[SYS] PAGE 01 / 05
====================
TXN_ID: A001 AMT: 500
TXN_ID: A002 AMT: 300
...
[PRESS PGDN FOR MORE]

分頁 (Pagination) 的挑戰

當資料長度超過單一畫面時,系統會強迫換頁。

斷層的資料流

一筆完整的報表被物理分割成多個獨立畫面,無法使用 Ctrl+A 一次全選。

人工拼接風險

手動複製貼上時,容易重複貼上表頭 (Header) 或遺漏交界處的資料列。

格式不規則

因排版需要的空白字元、分隔線,會嚴重干擾後續的資料分析與試算表讀取。

解決方案:ABC123 資料整理工具

為了克服終端機資料清洗的挑戰,內部開發了專屬的自動化工具 (Excel 巨集 `xlsm`)。

工具設計目的

標準化手動複製的流程,提供一個統一的 「緩衝區 (Buffer)」 來接收片段資料,最後一鍵執行正則表達式或字串切割,產出結構化清單。

核心策略:分段緩衝管理

面對無法一次獲取的資料,我們不直接寫入資料庫,而是透過 Buffer 管理策略 進行中轉。

策略一:Copy

初始化 Buffer
(清空舊資料,存入第一頁)

策略二:Copy Add

疊加至 Buffer
(附加後續頁面至尾端)

第一頁:使用「Copy」

手冊步驟 1-A 登入系統,查詢 ABC123 資料,第一頁請用「複製 (Copy)」。

背後邏輯分析:

  • 重置狀態: 確保剪貼簿或作業區沒有上次作業殘留的歷史資料。
  • 建立起點: 捕捉報表的最頂層資訊(包含總表頭、欄位定義等)。
  • 行為: 屬於 Overwrite (覆寫) 模式。

後續頁面:使用「Copy Add」

手冊步驟 1-B 之後 (第二頁起) 請用「複製新增 (Copy Add)」功能。

背後邏輯分析:

  • 持續收集: 工具/終端軟體允許將新選取的文字,無縫接軌附加在剪貼簿內容的結尾。
  • 避免中斷: 使用者不需每翻一頁就切換視窗去貼上,大幅提升作業流暢度 (UX 提升)。
  • 行為: 屬於 Append (附加) 模式。

為什麼需要 Copy Add?

減少 Context Switch

若無 Copy Add,使用者須:複製 ➔ 切換 Excel ➔ 尋找最後一行 ➔ 貼上 ➔ 切回終端機。來回次數 = 頁數。極易疲勞出錯。

維持資料連續性

在記憶體層面 (剪貼簿) 完成資料的串接,工具只需面對一次完整的 Data Stream,簡化解析邏輯。

進入整理工具

手冊步驟 2 開啟 ABC123資料整理工具.xlsm,點選「貼上清除區」後,貼上步驟一的複製內容。

貼上清除區 (Paste & Clear Area):

這是一個經過特殊設計的工作表區域。它的作用不僅僅是容納資料,還附帶了「觸發前置處理」的防呆機制。貼上巨量文字前,會確保該區域已被清空,防止新舊資料混雜。

執行結構化清洗

手冊步驟 3 點選「取得ABC123清單」,即可取得結果。

當按下按鈕後,後台 VBA 腳本會進行以下動作:

  • 剔除雜訊: 移除各分頁中間重複出現的表頭 (Headers) 與換頁提示符號。
  • 字串對齊: 將固定寬度 (Fixed-width) 的文字資料,依照字元數切割成獨立欄位。
  • 型別轉換: 將含有千分位的字串轉為純數字,日期字串轉為標準日期格式。

資料轉換成果對比

Before (貼上清除區)


 PAGE 01
 DATE  ID     AMOUNT
 -------------------
 11/01 A01    500
 11/01 A02  1,200
 PAGE 02
 DATE  ID     AMOUNT
 -------------------
 11/02 A03    300
                        

After (ABC123清單)

DateIDAmount
2023-11-01A01500
2023-11-01A021200
2023-11-02A03300

技術洞察:記憶體與效能

在設計類似 ABC123 的自動化工具時,開發者需考量:

字串操作成本 (String Manipulation)

將大量文字一次性存入 Excel 儲存格,再透過 VBA 陣列 (Array) 讀取進記憶體進行清洗,速度會比逐行 (Row by Row) 讀寫儲存格快上百倍。這正是設立統一「貼上清除區」架構的底層優勢。

技術洞察:防呆與容錯設計

預防髒數據

按鈕命名為「貼上清除區」,語意上暗示使用者此處資料為過渡性質,且工具執行前會自動 Clear Contents,避免上次的少數行數殘留在新資料的尾端。

彈性正則解析

遇到多餘的分頁表頭時,清洗邏輯應使用關鍵字過濾(例如略過開頭為 "PAGE" 或 "---" 的列),而非寫死行號,以因應不同資料筆數的動態變化。

今日重點回顧

  • 處理終端機分頁資料時,善用 Buffer 疊加 (Copy Add) 技巧。
  • 單一收集點 (貼上清除區) 有助於減少手動切換視窗的頻率與錯誤。
  • 自動化腳本的核心價值在於:剔除雜訊、字串切割、型別正規化
  • 系統化資料清洗,是確保後續報表統計與資料庫匯入正確性的基石。

Q & A

感謝聆聽,歡迎提問與交流技術細節!

— END OF PRESENTATION —