EXCEL VBA – Trim string with specific delimiter 截去特分隔符號後面的字串


http://wp.me/ph3BR-Q7

 

data

item
AN-BA044.5-0.8-9415-7V
AN-BA9090-9.7-0821-51V
AN-BA9191-9.4-0820-51
AN-BA9595-9.6-0798-51V
AN-AFN0505-9.2-9415-7-R.9
AN-AFN0707-9.6-9026-51
ANH-BA9797-9.5-0695-51
ANH-BA9999-9.8-0694-51
ANH-BA2929-2.1-0592-51-R.A
ANH-BA2727-2.0-0490-51-R.4
ANH-BA2929-2.0-0409-51
ANH-BA1515-9.5-0108-51
ANX-BA17.517.5-2.0-0107-51V

AND-2020-9.4-0592-99-R.A
AN-2020-9.0-0592-99

.

.

before trim

nEO_IMG_before trim

after trim, result

nEO_IMG_after trim

.
.

VBA source code


Sub 整理資料()
'''''''''''' 2013-03-26, xiaolaba
''''''''''''

'先查有資料的範圍, 得到最大的行,列號, 計算有多少格資料要處理
最大的列號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 = 2                                   '設定指向第一格
Do While Y <= 最大的行號y
Cells(Y, X).Select

'''ActiveCell = 除去字串中連續兩個的空格(ActiveCell)

'原字串存在 ActiveCell , 分隔號 "-", 第4個位置
'左側資料結果存到右側的 CELL
'右側資料結果存到右側的 CELL + 1
ActiveCell.Offset(0, 1) = 分解字串(ActiveCell, "-", 4, "保存左邊資料")
ActiveCell.Offset(0, 2) = 分解字串(ActiveCell, "-", 4, "保存右邊資料")

Y = Y + 1                       '已處理本格, 指向下一格
Loop
'       X = X + 1                           '已處理本列, 指向右面一列
'   Loop

End Sub

Public Function 分解字串(待處理字串 As String, 特殊分隔字符 As String, 第X個 As Integer, 保留動作 As String) As String

Dim J, i As Integer

原本字串 = Trim(待處理字串)     '先去除字串內首尾沒用的 SPACE, 人眼看不見, EXCEL 卻會分辨
原本字串長度 = Len(原本字串)    '

整理後新字串 = ""               '準備空白的容器, 裝載處理過的字串

i = 0

'找出指定數目的 特殊分隔字符 的位置
For J = 1 To 第X個
i = InStr(i + 1, 原本字串, 特殊分隔字符)    '開始 i = 0, 找到第N個, 位置號碼存在 i, 然後下次從 i+1 開始繼續找
If i = 0 Then Exit For                      '如果完全找不到, 退出
Next

If (i > 0 And 保留動作 = "保存左邊資料") Then
整理後新字串 = Left(原本字串, i - 1)        '如果 i > 0, 表示找到, 把這個分隔符號和後面的資料去掉
End If

If (i > 0 And 保留動作 = "保存右邊資料") Then
整理後新字串 = Mid(原本字串, i + 1)       '如果 i > 0, 表示找到, 把這個分隔符號和前面的資料去掉
End If

分解字串 = 整理後新字串 '返回函數, 處理好的資料

End Function

.
.

REF

http://blog.yahoo.com/xiao-laba/articles/382209

About these ads

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s