[HELP] - Tách dữ liệu ra nhiều file theo cấp quản lý. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

subasatran

Thành viên hoạt động
Tham gia
17/3/13
Bài viết
114
Được thích
6
Xin chào A/E GPE,
Mình có 1 file tổng hợp dữ liệu và phải gởi báo cáo cho từng vùng nên bây giờ muốn tách ra từng file riêng của từng vùng để gởi. Việc tách ra cũng khá mất thời gian với thủ công nên mạn phép nhờ A/E GPE giúp đỡ.
Số là file dữ liệu tổng gồm rất nhiều reccord của nhiều vùng(mỗi vùng có nhiều record).
Vậy có code VBA nào có thể tự động tách ra theo mỗi vùng và lưu lại với các file riêng biệt(có forrmat giống file dữ liệu tổng) ko vậy ?.
Trong file dữ liệu tổng thì có cột Regional Heads để phân biệt mỗi vùng khác nhau.
Dựa vào cột để tách theo mỗi vùng.
Mình gởi kèm file ví dụ, nếu a/c/e nào biết xin giúp đỡ giúp. Cám ơn mọi người.
(Có 3 file trong file ví dụ. File 201509_MONTHLY PRODUCTION REPORTS - Bao cao KQSX hang thang là file tổng cần tách.
2 file còn lại là 2 file sau khi tách ra, mình lấy 2 file ví dụ thôi.
Nếu có bao nhiêu người Regional heads thì sẽ tách ra bấy nhiêu file.)
p/s : Yêu cầu của mình là muốn thế, nếu có vấn đề gì mọi người thấy không khả thi vui lòng cho mình biết mình sửa lại.
 
Hii mọi người.
Sau khi xem bài anh ndu96081631tại
http://www.giaiphapexcel.com/forum/...để-cập-nhật-dữ-liệu/page2&p=204859#post204859
thì đã áp dụng được bài mình rồi.
Nhưng tiếc là mình muốn tách ra một lúc 2 sheet(Sheet Agency và Sheet Mgr_Unit) luôn.
Muốn tách 1 lúc 2 sheet thì chính lại code thế nào để tách ra được nhỉ.
Cám ơn mọi người.
Link http://www.mediafire.com/view/98tbr4c5z1c1xso/201509_MONTHLY_PRODUCTION_REPORTS.xlsm
http://www.mediafire.com/download/98tbr4c5z1c1xso/201509_MONTHLY+PRODUCTION+REPORTS.xlsm

 
Lần chỉnh sửa cuối:
Bạn thử chạy code sau xem:
Mã:
Option Explicit


Sub GPE()
Dim Dic As Object, Tmp As String, Re
Dim I As Long, J As Long, K As Long, ShAge As Worksheet, ShMgr As Worksheet
Dim Arr, dArr, Rng As Range, Sh1 As Worksheet, Sh2 As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Arr = Sheet1.Range(Sheet1.[A5], Sheet1.[A65000].End(3))
ReDim dArr(1 To UBound(Arr, 1), 1 To UBound(Arr, 2))
Set Dic = CreateObject("Scripting.Dictionary")
With Dic
    For I = 1 To UBound(Arr, 1)
    Tmp = Arr(I, 1)
        If Not .Exists(Tmp) Then
            K = K + 1
            .Add Tmp, K
            For J = 1 To UBound(Arr, 2)
                dArr(K, J) = Arr(I, 1)
            Next J
        End If
    Next I
End With
    Sheet1.Range("M5").Resize(K, UBound(Arr, 2)) = dArr
On Error Resume Next
Set ShAge = ThisWorkbook.Sheets("Agency")
Set ShMgr = ThisWorkbook.Sheets("Mgr_Unit")
Set Rng = ShAge.Range(ShAge.[A4], ShAge.[A65000].End(3)).Resize(, 12)
For Each Re In ShAge.Range("M5:M" & ShAge.[M65000].End(3).Row)
    With Workbooks.Add
        Set Sh1 = .Sheets(1)
        Set Sh2 = .Sheets(2)
        Sh1.Name = "Agency"
        Sh2.Name = "Mgr_Unit"
        Rng.AutoFilter 1, Re
        ShAge.Range(ShAge.Range("A1"), Rng).SpecialCells(12).Copy
        Sh1.Range("A1").PasteSpecial 8
        Sh1.Range("A1").PasteSpecial
        Rng.AutoFilter
        ShMgr.Range("A1:N" & ShMgr.[A65000].End(3).Row).Copy
        Sh2.Range("A1").PasteSpecial 8
        Sh2.Range("A1").PasteSpecial
        .Close True, ThisWorkbook.Path & "\" & Re & ".xlsx"
    End With
Next Re
        Sheet1.Range("M5:M65000").ClearContents
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Cám ơn hpkhuong rất nhiều.
Đoạn code trên thì tách được 01 sheet(Sheet Agency). Còn sheet còn lại(Sheet Mgr_Unit) chỉ copy. chưa tách ra được.
 
Thực sự rất cám ơn sự giúp đỡ nhiệt tình của hpkhuong.
Không biết có ở SG ko ?
Nếu ở SG thì vui lòng cho số dt có gì mời uống cafe cám ơn sự giúp đỡ rất nhiệt tình. cũng có thể học hỏi thêm chút ít về code. :-=
 
Ờ tôi ở Gài Gòn. Cơ mà khó có cơ hội uống cà phê lắm...vì hok có thời gian rảnh mà đi cà phê đâu...kaka

ủa anh gì ơi sao trong cái folder có file mẫu kết quả tên là
201509_MONTHLY PRODUCTION REPORTS - Bao cao KQSX hang thang_HA VAN DUC.xlsx
mà em chạy code của anh lại ra cái file gì tên là
Hµ V¨n §øc.xlsx
là sao vẩy anh ? +-+-+-++-+-+-++-+-+-+
 
Oh Thánh soi. Ờ kết quả mẫu nó nằm trong file chứ hok có đánh giá qua cái tên file... Biết đâu anh kia thích thì đổi lại tên File là "Chim Hồng" khi post lên thì sao... Kệ họ đi, họ tự xử được mà lị...kakaka:-=:-=:-=
à tức là anh thích nói chuyện kết quả nằm trong file chứ gì ? em chiều hết .
sao em chạy code của anh ra các file mới tạo đều chỉ có mỗi 1 sheet tên là Agency vẩy anh ? hổng thấy cái nào là Mgr_Unit hết
 
Sao vậy ta. Tôi cũng dowload file ở post 1 về. và copy code ở post 6 paste vào và chạy... Vẫn ra kết quả bình thường mà lị
Cơ mà không biết quay video màn hình để chứng minh...hichicc... sao bạn test ra như thế nhỉ?

Nhưng rõ ràng là ông chủ thớt vẫn ra kết quả đó...nếu không đúng thì ông đó la làng lên rồi...

Bạn chưa suy nghĩ đến chuyện máy của mỗi người dùng đã chỉnh khi tạo mới 1 file thì mặc định tạo ra mấy sheet ?
Nếu chỉnh tạo ra có 1 sheet thì làm gì có vụ này đây ?
Mã:
[COLOR=#000000]Set Sh2 = .Sheets(2)[/COLOR]
mình chỉ lưu ý bạn vậy thôi . Tại bạn chỉ thích nói chuyện kết quả trong file mà . Còn chuyện tên file bạn né rồi nên mình không có dịp nói thêm nữa . hi hi
 
Ờ thì theo mặc định thì khi tạo book mới có 3 sheet mà,... hiểu chỗ này rùi... vậy là máy bạn có mỗi sheet...kekeke
Còn vụ tên sheet thì đâu có gì quan trọng. Nối vào cũng được....mà thấy nó dài thòn lòn nên không thích...thôi...hehe
ủa bạn nối kiểu gì mà
"Hµ V¨n §øc" sẽ biến thành "HA VAN DUC" mới là hấp dẫn ấy chứ , chuyện nối thì có gì đâu mà nói .
 
ờ thì test lại . hi hi
[video=youtube;NEcOUC9hFeo]https://www.youtube.com/watch?v=NEcOUC9hFeo[/video]
Không liên quan... nhưng mình xin hỏi cái phần mềm có biểu tượng chữ "C" ở taskbar là phần mềm gì?
Video quay từ 11:21 AM, cả upload lên youtube và gửi bài xong ở GPE là lúc 11:33 AM (cùng ngày). Xin hỏi có phải tập dượt trước khi quay video không?
 
Không liên quan... nhưng mình xin hỏi cái phần mềm có biểu tượng chữ "C" ở taskbar là phần mềm gì?
Video quay từ 11:21 AM, cả upload lên youtube và gửi bài xong ở GPE là lúc 11:33 AM (cùng ngày). Xin hỏi có phải tập dượt trước khi quay video không?
nó là phần mềm Camtasia Studio đó mà
tập dợt cái gì không biết nữa , chúng tôi giao lưu qua lại thôi . Video có 2p đương nhiên là up lên Youtube rất nhanh rồi có gì gây ngạc nhiên chăng ?
 
ồ hóa ra cũng có người đi code cho nhu cầu tự sướng của doveandrose nữa cơ đấy , cảm động ghê !
1/mà sao code chạy ra vẫn chỉ có 1 sheet vẩy bạn ?
2/Bạn chuyển có dấu TCVN sang có dấu UNICODE rồi chuyển có dấu UNICODE sang không dấu , có thấy mệt không bạn ?
sao không là có dấu TCVN sang không dấu vậy bạn ?
 
Đã thử add books mới theo cách bạn nói ở topic kia mà sao không được ta.
Excel trên máy tôi mặc định khi new workbook là ra 3 sheet.
Nhưng thử áp dụng nhưu bạn nói là Workbooks.Add(x) , với x là số sheet mong muốn mà khi chạy code ở trên nó ra không được ta.
Workbooks.Add(2) : mong muốn là khi add wbooks mới nó ra 2 sheet...(nó không ra mà nó lại ra 1 cái sheet là chart mới ghê..)

bạn có 1 sự nhầm lẫn tai hại rồi =)) . cái số X đó đâu phải là số sheet đâu , giống như range.end(x) đâu phải muốn ghi số mấy vào là ghi bạn ơi . Để tạo ra 2 sheet thì tôi dùng cách làm như đã ghi ở Topic bên kia đó . Thao tác copy 2 sheet to new Workbook mà record macro làm sao thì tôi làm lại y vậy
 
bạn có 1 sự nhầm lẫn tai hại rồi =)) . cái số X đó đâu phải là số sheet đâu , giống như range.end(x) đâu phải muốn ghi số mấy vào là ghi bạn ơi . Để tạo ra 2 sheet thì tôi dùng cách làm như đã ghi ở Topic bên kia đó . Thao tác copy 2 sheet to new Workbook mà record macro làm sao thì tôi làm lại y vậy
Ở topic này một người đã lên sao vàng đứng im ^^
 
bạn có 1 sự nhầm lẫn tai hại rồi =)) . cái số X đó đâu phải là số sheet đâu , giống như range.end(x) đâu phải muốn ghi số mấy vào là ghi bạn ơi . Để tạo ra 2 sheet thì tôi dùng cách làm như đã ghi ở Topic bên kia đó . Thao tác copy 2 sheet to new Workbook mà record macro làm sao thì tôi làm lại y vậy
Hông biết cách của "chim hồng" đại ca là như thế nào nhỉ. Có gì chỉ giáo với. Còn muốn có bao nhiêu sheet thì có cách cùi bắp này:
Mã:
Sub GPE()
Dim Núm As Integer
    With Application
      Núm = .SheetsInNewWorkbook
      .SheetsInNewWorkbook = [COLOR=#ff0000]10[/COLOR] 'Thay đổi số sheet theo yêu cầu
      Workbooks.Add
      .SheetsInNewWorkbook = Núm
    End With
End Sub
 
Theo yêu cầu rút gọn của hpkhuong:
Mã:
Sub GPE()
      Application.SheetsInNewWorkbook = 10
      Workbooks.Add
End Sub
 
Sao vậy ta. Tôi cũng dowload file ở post 1 về. và copy code ở post 6 paste vào và chạy... Vẫn ra kết quả bình thường mà lị
Cơ mà không biết quay video màn hình để chứng minh...hichicc... sao bạn test ra như thế nhỉ?

Nhưng rõ ràng là ông chủ thớt vẫn ra kết quả đó...nếu không đúng thì ông đó la làng lên rồi...

Chính xác là kết quả ra cả 2 sheet rồi. Bữa giờ chưa ghé lại vào GPE được.
Thanks.
 
Xin chào mọi người
Mình có một file bên dưới cần tách ra theo mỗi người quản lý ở Sheet RD(file này được cung cấp theo một template cố định) nên mình muốn sẽ automatic việc tách fle.
Bây giờ mình cần tách ra theo tên mỗi RD trong sheet RD.
Mỗi RD sẽ quản lý nhiều khu vực. Mã khu vực của sheet RD sẽ tương ứng với cột A và Cột M của sheet vd1.
Khi tách sẽ giữ nguyên format của sheet vd1 và lấy tên mỗi file là tên RD.
Trong sheet vd1 có 2 cột chứa mã khu vực là cột A và cột M, sẽ tách file theo tiêu chí của 2 cột này.
Mọi người vui lòng tư vấn để giải quyết giúp. Mong mọi người giúp đỡ. Cám ơn mọi người.
 
Hic, do tối mò mẫm ko được rồi nhìn nhầm cột luôn.
Tướng ứng với mỗi người RD (Khánh Nguyễn - Vùng 01, Thu Nguyễn - Vùng 02) sẽ quản lý các Location (HAN01, HAN02, HCM01....) là mã khu vực(Sheet RD).

Bây giờ muốn tách sheet vd1 với 2 cột A và Cột N (2 cột mã khu vực) ra theo tên mỗi người RD.
Mình có đưa 2 file ví dụ sau khi tách nó sẽ như file đinh kèm(file Khanh Nguyen - Vung 01 và thu Nguyen - vung 01).
File cần tách là Tach file.
 
Web KT

Bài viết mới nhất

Back
Top Bottom