Dùng Macro để tách hàng thành cột nhưng ngày tháng bị sai định dạng

Liên hệ QC

hdhanh

Thành viên mới
Tham gia
21/9/22
Bài viết
4
Được thích
0
Chào các bác;
em có dùng Macro để ghi lại hàng loạt các thao tác để tách 1 dòng dữ liệu dạng text thành các cột dữ liệu như thế này:
Xuly.JPG

Tuy nhiên, khi em thao tác bằng tay (Replace, Text to Columns, ... thì ngày tháng trong dòng text đó ra ngon lành, ngày tháng đúng cả, chạy lần 1 cũng ngon lành.
Nhưng sau đó thì lại bị nhận sai, ngày thành tháng và ngược lại.

Cái code Macro nó như này ạ:
Mã:
Sub Xuly_2()
'
' Xuly_2 Macro
'

    Range("A1:A1").Select
    Selection.Replace What:="""]}*", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="*cell"":[""", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=""",""", Replacement:="|", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("A1:A1").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
        1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12 _
        , 1), Array(13, 1), Array(14, 1)), TrailingMinusNumbers:=True

End Sub

Bác nào có thể giúp em sửa lại cái Macro để nó sau khi tách dữ liệu ngày tháng ra thì nó nhận đúng định dạng được không ạ?
em xin cảm ơn ạ!
 

File đính kèm

  • Xu ly du lieu.xlsm
    27 KB · Đọc: 13
Chào các bác;
em có dùng Macro để ghi lại hàng loạt các thao tác để tách 1 dòng dữ liệu dạng text thành các cột dữ liệu như thế này:
View attachment 281196

Tuy nhiên, khi em thao tác bằng tay (Replace, Text to Columns, ... thì ngày tháng trong dòng text đó ra ngon lành, ngày tháng đúng cả, chạy lần 1 cũng ngon lành.
Nhưng sau đó thì lại bị nhận sai, ngày thành tháng và ngược lại.

Cái code Macro nó như này ạ:
Mã:
Sub Xuly_2()
'
' Xuly_2 Macro
'

    Range("A1:A1").Select
    Selection.Replace What:="""]}*", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="*cell"":[""", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=""",""", Replacement:="|", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("A1:A1").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
        1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12 _
        , 1), Array(13, 1), Array(14, 1)), TrailingMinusNumbers:=True

End Sub

Bác nào có thể giúp em sửa lại cái Macro để nó sau khi tách dữ liệu ngày tháng ra thì nó nhận đúng định dạng được không ạ?
em xin cảm ơn ạ!
Bạn đang học hay là dùng vào công việc.Nếu dùng vào công việc gửi file đầy đủ dữ liệu mình code còn học thì cứ tìm hiểu thêm.
 
Chào các bác;
em có dùng Macro để ghi lại hàng loạt các thao tác để tách 1 dòng dữ liệu dạng text thành các cột dữ liệu như thế này:
View attachment 281196

Tuy nhiên, khi em thao tác bằng tay (Replace, Text to Columns, ... thì ngày tháng trong dòng text đó ra ngon lành, ngày tháng đúng cả, chạy lần 1 cũng ngon lành.
Nhưng sau đó thì lại bị nhận sai, ngày thành tháng và ngược lại.

Cái code Macro nó như này ạ:
Mã:
Sub Xuly_2()
'
' Xuly_2 Macro
'

    Range("A1:A1").Select
    Selection.Replace What:="""]}*", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="*cell"":[""", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=""",""", Replacement:="|", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("A1:A1").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
        1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12 _
        , 1), Array(13, 1), Array(14, 1)), TrailingMinusNumbers:=True

End Sub

Bác nào có thể giúp em sửa lại cái Macro để nó sau khi tách dữ liệu ngày tháng ra thì nó nhận đúng định dạng được không ạ?
em xin cảm ơn ạ!
Thử code vầy coi được không
Mã:
Sub Xuly()
Dim Res As Variant
With Range("A1")
    .Replace "*[""", ""
    .Replace """]*", ""
    Res = Split(.Value, """,""")
End With
Range("A1").Resize(, UBound(Res) + 1) = Res
End Sub
 
Bạn đang học hay là dùng vào công việc.Nếu dùng vào công việc gửi file đầy đủ dữ liệu mình code còn học thì cứ tìm hiểu thêm.
Vâng công việc bác ạ. Và chính xác là mỗi ngày em có 3 hàng dữ liệu, em có để 3 ví dụ trong file đấy ạ;
Và em muốn xử lý tách 3 dòng đấy thành các cột, sau đấy xếp vào 1 hàng và copy vào bảng thống kê ở sheet khác ạ
Bài đã được tự động gộp:

Thử code vầy coi được không
Mã:
Sub Xuly()

End Sub

Cảm ơn anh; em đã thử dùng code của anh; nhưng kết quả thì vẫn như thế anh ạ.
Sau khi tách thì cột ngày tháng thì vẫn nhận đúng ngày tháng, nhưng ở dạng text, khi em bấm F2 vào ô đó thì nó nhận lại ngày tháng, có điều ngày tháng lẫn lộn với nhau ạ
Em có gửi file sau khi thay code của anh đây ạ
 

File đính kèm

  • Xuly_dulieu.xlsm
    30.5 KB · Đọc: 5
  • Xuly_dulieu2.xlsm
    28.4 KB · Đọc: 5
Lần chỉnh sửa cuối:
ngày thành tháng và ngược lại.
Nếu tôi đoán đúng thì sửa như sau, nếu sai bét thì thôi - coi như không có bài của tôi.

Nếu dữ liệu đầu vào luôn đúng như trong tập tin, tức dạng ... cell":["dd/mm/yyyy" ... thì sửa
FieldInfo:=Array(Array(1, 1)

thành

FieldInfo:=Array(Array(1, 4)
 
Lần chỉnh sửa cuối:
Nếu tôi đoán đúng thì sửa như sau, nếu sai bét thì thôi - coi như không có bài của tôi.

Nếu dữ liệu đầu vào luôn đúng như trong tập tin, tức dạng ... cell":["dd/mm/yyyy" ... thì sửa


thành
Ngon lành cành đào bác ơi. Em cảm ơn nhiều nhiều ạ
 
Vâng công việc bác ạ. Và chính xác là mỗi ngày em có 3 hàng dữ liệu, em có để 3 ví dụ trong file đấy ạ;
Và em muốn xử lý tách 3 dòng đấy thành các cột, sau đấy xếp vào 1 hàng và copy vào bảng thống kê ở sheet khác ạ
Bài đã được tự động gộp:



Cảm ơn anh; em đã thử dùng code của anh; nhưng kết quả thì vẫn như thế anh ạ.
Sau khi tách thì cột ngày tháng thì vẫn nhận đúng ngày tháng, nhưng ở dạng text, khi em bấm F2 vào ô đó thì nó nhận lại ngày tháng, có điều ngày tháng lẫn lộn với nhau ạ
Em có gửi file sau khi thay code của anh đây ạ
Thêm chút xíu nữa chắc ổn
Mã:
Sub Xuly()
Dim Res As Variant
With Range("A1")
    .Replace "*[""", ""
    .Replace """]*", ""
    Res = Split(.Value, """,""")
    Res(0) = CDate(Res(0))
End With
Range("A1").Resize(, UBound(Res) + 1) = Res
End Sub
 
Thêm chút xíu nữa chắc ổn
Mã:
Sub Xuly()
Dim Res As Variant
With Range("A1")
    .Replace "*[""", ""
    .Replace """]*", ""
    Res = Split(.Value, """,""")
    Res(0) = CDate(Res(0))
End With
Range("A1").Resize(, UBound(Res) + 1) = Res
End Sub
Để chiều em thử ạ. Em chân thành cảm ơn anh và cộng đồng GPE nhiều ạ
 
Web KT
Back
Top Bottom