如何利用『資料處理過濾增益集』在Excel中以資料格的資料長度進行篩選處理

如何利用『資料處理過濾增益集』在Excel中以資料格的資料長度進行篩選

昨天學校同事拿一份要上傳報名考試的學生資料,請我協助處理。上傳的資料必須是ANSI純文字檔,資料的欄位是以資料長度來決定欄位的位置,格式大致如下:

報名序號長度         8個字元

身份證字號長度    10個字元

姓名長度               20個字元

其中前兩欄大致上沒有甚麼問題,因為從學校的資料庫轉出的學生這部分資料,再轉存為ANSI文字檔時,長度是符合的上傳格式的要求,但是姓名的部分就比較麻煩,因為有人的名字是不同的長度,而上傳格式中要求姓名欄位必須以空格補足20個字元,這種要求據同事說以前使用的漢書這種文書軟體很容易完成。但是現在她的電腦已經沒有漢書這套軟體,所以她請我協助是否可以利用Excel產生這樣的文字檔,因為Excel可以將資料庫轉出的檔案轉存成文字檔,再利用WINDOW內建筆記本這種軟體,將檔案轉存為ANSI純文字檔格式。

我們要解決這個問題,比較麻煩的是必須將姓名資料中特殊長度的特別挑出,並且加入空格補足。除了這個問題,我們必須考慮中文編碼的特性,中文姓名常見的資料長度是三個中文字,在ANSI編碼每個中文字是2碼組成,所以三個中文字轉成ANSI時長度是6個字元,如果使用VB6來處理補足長度20的問題,只要加入7個空白鍵即可,因為中文是DBCS(雙位元組字元),VB6處理中文字串時,雖然中文是雙位元組合,但是VB6的字串處理函數例如Len是把一個中文字當成一個字元來處理,所以只要在中文姓名之後加入7個空白字元即可,整個字串變成是10個DBCS字元,轉成ANSI時空白字元長度變成14字元,再加上原來6個字元即可符合20個字元的要求要求。

知道處理的原理接著的重點,如何在幾百筆的學生資料中找出那些姓名長度不是三個字的,如果利用『資料處理過濾增益集』在Excel中處理應該如何做?

若部分資料如下

李諭琪
廖靚緯
林博晟
林旻安
林樺蝶
林欣慧
林容
林彥國
駱馨
郭儀千
胡閔惠
黃銘亭
黃佳宣
黃哲佳
黃文家
洪芸敏
邱秀儒
邱士瑛
謝茹守
張俊郁
張茹瑰
卓文
陳萍玫
陳暉閔
陳如曄
陳毓儀
蔡治宗
曾珍宜
蘇芳婷
蘇心
蘇怡新
游宏音
吳凡瑋
吳潔欣
魏容傑
王俊昭

舉例我們要挑出姓名是兩個字的學生資料,再加入8個空白字元,可以依以下步驟:

步驟一、點選『正規比對資料過濾』/『工作表資料內容處理』表單

image

步驟二、點選表單中『資料處理範圍』/『選取』按鈕,將要處理的資料位置選取,在『用來篩選資料處理對象的規則』輸入此正規表示規則 ^\S{2}$            (此篩選的規則是從頭到尾必須是兩個非空白字元)

然後在『加在資料後的字串』輸入8個空白字元,按確定即可達成。為了方便讀者看出處理的結果,我改用輸入7個#來代替。

image

步驟三:處理結果如下

image

如果是使用Excel2003,請將改好的Excel檔案另存為CSV檔,再利用筆記本等文字編輯軟體打開,利用全選與取代功能,把 ”與 逗號取代掉,再另存為ANSI的文字檔格式,因為Excel2003再轉存為CSV檔案或TAB鍵分隔的文字檔,會出現自動把字串格式資料加上引號的現象!

ps:另外在『正規比對資料過濾』/『工作表資料篩選』也提供另一種不用正規比對的篩選的方法,取消『用正規表示法比對』設定,在『數值比對以x代表資料格的值』輸入 len(x)=2   (x代表資料格值,len為字串長度函數,此篩選式為篩選資料格長度是2的資料格)

 

image

image

cool      歡迎引用,請注明來源出處!

作者:楊煥謀