而她要整理成如下面的樣式:
身為童子軍的我的,當然要日行一善、伸出援手⋯(謎之音:我看你是寒假吃飽太無聊了,在找機會練功吧!)
首先,我們來分析看看這個問題,「應該」會需要作的步驟:
- 需要刪掉所有資料間的「-------------------------------------------------------」一串無意義的符號
- 刪掉所有多餘的空隔
- 刪掉電話號碼前的「TEL:」
- 將資料以每三列為一組整理成一列資料表
首先前三個步驟,很容易完成,因為資料來源很單純,所以不需要用的複雜的正規表示法(Regular Expressions),只要用普通的「尋找及取代」就可以了。
刪掉每一行的「-----------------------------------------------------------------」
刪掉多餘的空格(註:因為中文的文句中,本來就不會出現空格,所以我用很簡單的方法刪掉各個資料頭尾多餘的空格,但不一定試用於英文的文句中,因為英文地址間本來就容許空格,如用此方法則會連句子中應有的空格也被刪除。)
刪除「TEL:」
完了嗎?還沒!出來的資料還不夠整齊,我還要刪掉多餘的空行。
首先我在最上面的第一列插如一列空行,等一下我才可以用「自動篩選」找出所有的空行,並刪除所有的空行。
在這要用「自動篩選」前,請注意,我們要先選取一整欄的資料欄,否則「自動篩選」只會選到前面的幾列資料。
在「自動篩選」的下拉式方塊裡,我們只要選擇顯示「空格」就可以了,其它的資料都不要勾選。
選取藍色列號的資料列,按滑鼠右鍵選取「刪除列」。
取消「自動篩選」按鈕,我們應該可以看到如下圖的資料:
但是到這裡我們還沒有完成,我們還沒有把這些資料變成一列一列的資料表。但是,接下來我們應該怎麼作呢?我們先來想想看這些資料有什麼規律:
每三列為一組,第一列是店名、第二列是地址、第三列是聯絡電話。
所以第一筆資料的店名是在A1、第二筆資料的店名是在A4、第三筆資料的店名是在A7⋯
所以第n筆店名資料所在儲存格位置的關係是:
第n筆店所在儲存格=n3-2我新建立一個工作表,在A欄的位置拉出從1開始的連續數字(這個實例中大約到400多就夠了),而在B欄的第一格(B1)填入
=A1*3-2並下拉複製填滿B欄(大約到400多列就夠了)
接下來我們需要在C欄第一列(C1)叫用我們的 Excel 函數 INDIRECT ,它可以參照到傳給它的文字,只要該文字符合一定的樣式
例如我這裡填入的
=INDIRECT("'1'!A1")所出來的效果就相當於
='1'!A1只是用 INDIRECT 我可以賦予它更多的變數。
例如在我這個個案中,我的 C1 填如的函數是:
=INDIRECT("'1'!A"&B1)其中的 B1 就是一個變數,當我下拉填滿其它儲存格時,會隨著我每一列的B1、B2、B3⋯⋯資料而改變。而指向它們所代表的數字 1 、 4 、 7 ⋯⋯ 整個函式就相當於變成了 ='1'!A1 、 ='1'!A4 、 ='1'!A7 ⋯⋯ 只是後面的函式不再需要我一個一個去填,只要用 Excel 就可以搞定了。(註:其中的& 符號代表的是字串的連結符號)
另外後面代表地址的 D1 和代表聯絡電話的 E1 則只要分別在 B1 的後面 +1 和 +2 ,並填滿其它資料列即可:
=INDIRECT("'1'!A"&B1+1)
=INDIRECT("'1'!A"&B1+2)
後記:或許有人會問我為什麼不用程式再加正規表示法(Regular Expressions),首先,因為我不會用 RE ,也不知道那是什麼,能不能用來解決這個問題。再者,我想,這個問題應該沒有困難到要寫程式來解決= =|||
沒有留言:
張貼留言