iT邦幫忙

2026 iThome 鐵人賽

DAY 6
0
佛心分享-IT 人自學之術

老爺爺練習VIBE CODING系列 第 6

Day 6:防範前導零遺失:放款代碼對照表的字元格式正規化

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20260828/20070969Ti0cIDIOne.png
大孫女、小孫女,快,都別敲鍵盤了,快到阿公這兒來坐著。

小孫女,瞧妳這丫頭,在院子裡跟那隻小花貓追著落葉跑,弄得衣角都沾了泥沙。快過來,阿公給妳拍拍乾淨。大孫女,妳也別再揉那酸澀的眼睛了,天天盯著這小鐵盒(螢幕),阿公看著都替妳心疼。

阿公剛剛去灶頭燒了熱水,沏了一壺溫潤清香的杭菊茶,這琥珀熱茶正冒著嫋嫋白煙呢。來,小孫女幫姐姐搬張竹凳子,陪阿公坐在這藤椅深棕的老藤椅上,咱們一塊兒吹吹秋涼的晚風,看天邊那抹好看的晚霞。

阿公摸了摸這頭白髮銀霜,瞧妳今天一邊對著那份「放款類作業一覽表(也就是妳們常說的綠卡)」,一邊氣得直跺腳,說什麼「Excel 又自作聰明,把 0001 變成 1,系統對照全失敗了」。

來,喝口熱茶。今天這「Day 6」的修行,阿公就拿以前在鄉下農會整理老字號帳本、校對各類代碼的經歷,給妳們好好講講,怎麼 「防範前導零遺失」,給這些放款代碼對照表做一場乾淨的 「字元格式正規化」


🚨 痛點場景:自作聰明的記帳員,與消失的「前導零」災難

大孫女,妳跟阿公抱怨,說那些重要的放款代碼、擔保品代碼(像是 00010025),只要一倒進 Excel 裡,Excel 就會自作聰明地以為這是一般的數字,自作主張把前面的零全部抹掉,變成了數值 1 或者 25

這事情在系統匯入對照時,簡直就是一場災難。

阿公給妳們講個老故事。以前鄉下各家各戶交公糧,每戶都有一個專門編號,比如「陳家是 0005 號」,「李家是 0012 號」。如果阿公在記帳時,貪圖省事或者以為它就是純數字,隨手記成「5 號」和「12 號」。等到去倉庫提糧時,守門的長工拿著鐵印章去對照「5 號」,結果印章對不上(因為印章上刻的是 0005),這糧食不就提不出來了嗎?

在妳們的放款代碼對照表裡也是這個道理。這份官方放款類作業一覽表是全行連線系統的代碼基準。代碼少了一個零,後端系統就認不得它,最後整批放款對照、系統匯入通通失敗,害得妳和同事大半夜還要手動一個個補零,這誰受得住?


🛠️ 架構實作:給 Excel 套上文字格式的「籠頭」,一鍵徹底正規化

既然 Excel 喜歡自作聰明,那我們在寫巨集程式時,就得像阿公對待不聽話的小毛驢一樣,給牠套上嚴格的韁繩。

大孫女,妳要把那套主控巨集 BuildAllPropertyLists 拿出來。在寫入性質別、對象別、擔保品別等對照表時,我們要執行最徹底的字元正規化:

  1. Option Explicit 的嚴格保護:在所有 VBA 模組的最頂端,一定要寫上 Option Explicit。強迫自己宣告所有變數,不讓變數類型有任何模糊的空間,這是寫好 VBA 的基本功。
  2. 強制儲存格格式設定為文字(@):在巨集把代碼寫入儲存格之前,我們必須將代碼欄位的儲存格格式強制設定為文字格式 @。這樣一來,Excel 就會知道這排格子裝的是「字」而不是「數」,絕不隨便吃掉前導零。
  3. 在寫入值前加上單引號保護:除了設格式,最保險的招數就是在寫入代碼字串時,在值的前面多套上一個單引號('。這樣,即使 Excel 再怎麼自作聰明,一看到單引號,它也只能乖乖把這串字當成純字串讀進去,絕對能保留住最珍貴的前導零
  4. 字元正規化(剔除雜質):在寫入代碼前,我們要呼叫字元處理函式,自動剔除代碼中多餘的空白字元,甚至是 Chr(160) 這種頑固的不斷行空白,確保每個代號都能乾乾淨淨地維持在正確的 4 碼(性質別主表)或固定長度。
  5. 統一括號變體:官方對照表裡最常出現括號亂用。有的寫半形 (),有的寫全形 (),有的還寫小型括號 ﹙﹚。阿公建議妳用 NormalizeBrackets 輔助函式,把這些變體統一正規化為標準的全形 (),資料才不會看起來雜亂無章。

💡 避坑指南:別把雜草當飽穗,嚴格排除基準檔裡的髒資料

大孫女,阿公在鄉下編竹筐,知道收尾和剔除雜質最是要緊。這基準檔是官方文件,裡面不僅有乾淨的代碼,還夾雜了許多用來排版和說明的「髒資料」。

所以,妳的巨集絕對不能只做簡單的格式化,妳必須在處理時加入極其嚴密的資料排除規則

  1. 排除表頭列:只要那一列的值等於『代碼』、『代號』、『性質別』或『說明』等表頭字樣,巨集一律要果斷略過,不把表頭當成資料寫進去。
  2. 排除分類區塊標題與說明性長字串:像是擔保品工作頁裡,常有『0、無實質擔保品』這種含頓號『』的區塊標題,或者是代碼長度大於 4(性質別主表)或 5(擔保品表)的說明性長字串。這些如果誤寫入對照主檔,後台系統一匯入就會直接崩潰。因此,我們要加上『代碼長度限制』來過濾它們。
  3. 排除無效備註與空說明列:對於對象別等工作頁,我們要過濾掉那些以『備註』開頭的說明列,以及兩代號皆空的無效列。

只有把這些雜草般的髒資料徹底排除在外,妳的對照主檔才能像阿公挑出來的稻穗一樣,顆顆飽滿、乾乾淨淨


聽阿公唸了這麼多,大孫女、小孫女,有沒有覺得這 Excel 的前導零遺失,其實只要套上「文字格式」的籠頭,也就服服貼貼了?

寫程式啊,就跟我們鄉下人過日子一樣,凡事要細心,想在前面(Option Explicit、排除規則),後面就不會出亂子了。這六天上下來,妳已經把版控、分類、安全隔離、動態映射、數據排序跟代碼正規化的功夫都學到手了。阿公看著妳,心裡真替妳高興。

來,茶溫剛剛好,大孫女快喝一口。小孫女,這塊剛出爐的烤地瓜,拿去跟姐姐分著吃,甜甜嘴。


上一篇
Day 5:百萬級數據篩選:12個月預警指標與前50大分行逾放動態篩選
下一篇
Day 7:合規系統的大哉問:為什麼我們要將 LCR 估算從 Excel 遷移至 Web 系統?
系列文
老爺爺練習VIBE CODING7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言