![](https://imageproxy.pixnet.cc/imgproxy?url=../images/4FygFcjqPb5xdXqd63MeKw.jpg)
重覆但必須的工作, 例如友人需要每天處理超過好幾萬筆的資料, 可惜來源的格式需要修正. 為了方便運用 (匯入DATABASE, 市場資料分析等等), 必須做基本的處理.
例如以下括號內的資料, 首尾/中間包含可能是一個或多個空格 (SPACE) -
原始資料太多的空格 [ TEXT AAA BB TEXT ]
整理過後正規的資料 [TEXT AAA BB TEXT]
![](https://imageproxy.pixnet.cc/imgproxy?url=../images/ySU0X7Tq0Ckfh_ZYxbcz9g.jpg)
通常, 首尾的空格是多餘的 (可能某某會有爭議), 但是要作資料分析時, 這樣的空格往往造成困擾. 另外, 中間包含多個空格, 雖然可以用 [資料剖析] 或 [取代]去除, 但是會有衍生的問題. 如何把這樣的資料整理成比較正規的格式, 保留必須但最少的空格. 手工和時間的容許話, 可以慢慢來. 懶惰的話, 可以試一下用 MACRO (巨集) 的功能. 完整 MACRO 如下, 執行後, EXCEL 資料表內所有多餘的空格都會去除. 不想打字的話, EMAIL 寄給你源碼.
![](https://imageproxy.pixnet.cc/imgproxy?url=../images/ZP2K_B3Ia1mkYbr50RQjXg.jpg)
或剪貼以下到你的 MARCO 內
---------------------CUT & COPY HERE BELOW
Sub 整理資料()
'先查有資料的範圍, 得到最大的行,列號, 計算有多少格資料要處理
最大的列號x = Cells.Find(what:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
最大的行號y = Cells.Find(what:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
X = 1 ' X & Y 指標指向第一列的第一格
Y = 1
Do While X <= 最大的列號x
Y = 1 '設定指向第一格
Do While Y <= 最大的行號y
Cells(Y, X).Select
ActiveCell = 除去字串中連續兩個的空格(ActiveCell)
Y = Y + 1 '已處理本格, 指向下一格
Loop
X = X + 1 '已處理本列, 指向右面一列
Loop
End Sub
Public Function 除去字串中連續兩個的空格(待處理字串 As String) As String
原本字串 = Trim(待處理字串)
新字串 = ""
原本字串長度 = Len(原本字串)
字符指針 = 1
Do While 字符指針 <= 原本字串長度 '如預到連續兩個的空格, 只保留一個
現行字符 = Mid(原本字串, 字符指針, 1)
下一字符 = Mid(原本字串, 字符指針 + 1, 1)
If 現行字符 = "" Then Exit Do
ElseIf 現行字符 <> 下一字符 Or 現行字符 <> " " Then 新字串 = 新字串 & 現行字符
End If
字符指針 = 字符指針 + 1
Loop
除去字串中連續兩個的空格 = 新字串
End Function
---------------------CUT & COPY HERE ABOVE
END-