Board logo

標題: [發問] 資料剖析(VBA)求解決 [打印本頁]

作者: s13983037    時間: 2014-11-23 00:22     標題: 資料剖析(VBA)求解決

大大你們好
我是使用錄製聚集的方式弄一個關於資料剖析的程式
主要是想把Item   Version Part number      Serial number     Description
                                             ↑         ↑              ↑                       ↑                           ↑
                                             A1         B1             C1                      D1                         E1

切割成每個資料對應到每個欄位中
舉Item   為例 想要把Item   到Version前面的這個V之前的字串放到A1
舉Version 為例 想要把Version 到Part number      前面的這個P之前的字串放到B1
可以套用到多個EXCEL分頁中 由於Item到Version之前的空格不一定相同,可否有程式是抓取到V之前的字串放到A1中
以下為錄製程式碼 不知是否正確 是否有驗證的方法 或是有大大可以直接解決這個問題
For a = 2 To Worksheets.Count
    Worksheets(a).Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), Array(17, 1), Array(26, 1), Array(39, 1), Array(57, 1)) _
        , TrailingMinusNumbers:=True
    Worksheets(a).Columns("A:A").EntireColumn.AutoFit
    ActiveWindow.SmallScroll Down:=-60
Next
作者: luhpro    時間: 2014-11-23 04:37

大大你們好
我是使用錄製聚集的方式弄一個關於資料剖析的程式
主要是想把Item   Version Part number     ...
s13983037 發表於 2014-11-23 00:22
  1. Sub nn()
  2.   Dim iI%, iJ%, iA%
  3.   Dim vA
  4.   
  5.   vA = Split([A1])
  6.   iA = UBound(vA)
  7.   iI = 0
  8.   Do While iI <= iA
  9.     If Trim(vA(iI)) = "" Then
  10.       For iJ = iI To iA - 1
  11.         vA(iJ) = vA(iJ + 1)
  12.       Next
  13.       iA = iA - 1
  14.       ReDim Preserve vA(iA)
  15.       iI = iI - 1
  16.     End If
  17.     iI = iI + 1
  18.   Loop
  19.   [A5].Resize(, UBound(vA)) = vA
  20. End Sub
複製代碼

作者: s13983037    時間: 2014-11-23 14:03

回復 2# luhpro


    大大您好 我想要請問一下
定義以下兩個是要做甚麼的阿?? 看不太懂 可以解釋這個程式碼再跑甚麼嗎 我對於VBA是初學者 感謝
  vA = Split([A1])
  iA = UBound(vA)
作者: s13983037    時間: 2014-11-23 14:33

回復 2# luhpro


    大大您好 我可能沒有表達得很好 其實我是想弄成
對同一個儲存格開剖析 附蓋上去也沒關係
[attach]19652[/attach]
作者: luhpro    時間: 2014-11-25 23:46

回復  luhpro
    大大您好 我想要請問一下
定義以下兩個是要做甚麼的阿?? 看不太懂 可以解釋這個程 ...
s13983037 發表於 2014-11-23 14:03

vA = Split([A1])
對儲存格 [A1] 裡的字串做切割, 以空格為切割點, 切割出來的子字串依序放在 VA 陣列內.

iA = UBound(vA)
儲存迴圈處理時的最大值(即目前一維陣列 VA 內元素的個數)
   
回復  luhpro
    大大您好 我可能沒有表達得很好 其實我是想弄成
對同一個儲存格開剖析 附蓋上去也 ...
s13983037 發表於 2014-11-23 14:33

看不懂.
你是要以 空格 做為分割的依據?
若是, 上述程式就已實現.

還是固定文字長度做為分割的依據?
可參照底下函數定義抓取你要的字串
A=Left(sStr, X) ' A字串設為 sStr 字串從左邊算起 X 個字
A=Mid(sStr, B, C)   ' A字串設為 sStr 字串的第 B 個字開始取 C 個字
A=Right(sStr, D) ' A字串設為 sStr 字串從右邊算起 D 個字




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)