返回列表 上一主題 發帖

[發問] 有關資料剖析

[發問] 有關資料剖析

想要教Column A(整欄位)的資料分割到B/C/D 欄位
A欄位資料內容為日期格式 使用VB寫的話應該怎麼寫?分割依據為"/" 但是沒法順利切割開
不知道我寫的是否正確想請教板上專家

Sub AA()
Range("A:A").TextToColumns Destination:=Range("B"), OtherChar _
        :="/"

End Sub

本帖最後由 hugh0620 於 2012-3-27 11:47 編輯

回復 1# tommy.lin


    A欄位是日期格式~ 代表的就是年月日
    你要拆解的BCD欄位也就是年月日~
    用一般最簡單的方式~來拆解就可以了~
    若你A資料是從資料庫倒出來的~ 可能會是文字格式~有可能要修改一下~
    如果可以~ 請提供資料的範例~
  1. Sub EX_1()

  2. For Each a In Range("A:A")
  3.     If a <> "" Then
  4.        a.Offset(0, 1) = Year(a)
  5.        a.Offset(0, 2) = Month(a)
  6.        a.Offset(0, 3) = Day(a)
  7.     End If
  8. Next

  9. End Sub
複製代碼
學習才能提升自己

TOP

回復 2# hugh0620

檔案已上傳

TextToColumn.zip (6.88 KB)

TOP

本帖最後由 hugh0620 於 2012-3-27 12:17 編輯

回復 3# tommy.lin

B欄位~ 請改成數值格式~
題供兩種方式給你參考~
  1. Sub EX_1()
  2. For Each a In Range("A2:A65536")
  3.     If a <> "" Then
  4.        a.Offset(0, 1) = Year(a)
  5.        a.Offset(0, 2) = Month(a)
  6.        a.Offset(0, 3) = Day(a)
  7.     End If
  8. Next
  9. End Sub
複製代碼
  1. Sub xx()  '將字串分割成子字串
  2. For Each a In Range("A:A")
  3. h = Split(a, "/", 3, vbDatabaseCompare)
  4.     i = 1
  5.     For Each b In h
  6.     a.Offset(columnoffset:=i) = b
  7.     i = i + 1
  8.     Next
  9. Next
  10. End Sub
複製代碼
學習才能提升自己

TOP

可以了...Thanks lots..不過看不懂語法

TOP

本帖最後由 mark15jill 於 2012-3-27 13:36 編輯

回復 5# tommy.lin
直接把程式丟進VBA內..



sub xxg
        Columns("a:a").Select
    Selection.TextToColumns Destination:=Range("G1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="/", FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2)), _
        TrailingMinusNumbers:=True
end sub

作用:用 / 為判斷符號 加以切割

TOP

我有試著用巨集錄製成上面這樣子但實際執行時會出現error....

TOP

本帖最後由 mark15jill 於 2012-3-27 15:49 編輯

回復 7# tommy.lin


    麻煩貼圖 看哪邊有錯..



Sub xyw()
Columns("g:g").Select
    Selection.TextToColumns Destination:=Range("m1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="/", FieldInfo:=Array(Array(3, 2), Array(2, 2), Array(1, 2)), _
        TrailingMinusNumbers:=True
        
    sy = Columns("o:o").Value
    Columns("t:t") = sy
    sm = Columns("n:n").Value
    Columns("u:u") = sm
    sd = Columns("m:m").Value
    Columns("v:v") = sd
    Columns("m:o").Clear
End Sub

TOP

問題好像解開了...原本我有四個日期欄位需要資料剖析原本錄製的方式是一次全部做完
但是好像會有錯亂的現象(執行到一半卡住或是後面的插入欄位錯位)我的步驟如下
在每個日期欄位後面插入五個空白欄位資料剖析後刪除最後兩個預留欄位.以上步驟重覆四次
後來我分四次錄製在串接起來沒有錯誤發生.anyway 感謝板上高手協助

TOP

回復 4# hugh0620

  大大下面兩的可以解釋一下嗎
    vbDatabaseCompare  & columnoffset
    不太曉得用法
字典兩各字 還真難理解

TOP

        靜思自在 : 唯其尊重自己的人,才更勇於縮小自己。
返回列表 上一主題