Code Tách dữ liệu từ bảng tổng hợp ra các sheet chi tiết theo ngày

Liên hệ QC

n78nokia81

Thành viên mới
Tham gia
15/3/10
Bài viết
34
Được thích
1
Chào các thầy các bạn

Mình muốn nhờ giúp viết code cho file tách dữ liệu từ sheet database ra các sheet tổng hợp
Cụ thể mình có sheet bangke gồm các số liệu từ ngày 1 đến ngày 31. Mình muốn tự động chèn và tạo các sheet từ 1 đến 31 và copy dữ liệu các ngày từ 1 đến 31 vào các sheet tương ứng
Mình gửi file và dữ liệu mẫu mong được giúp đỡ
Cảm ơn

Việc xuất chi tiết ra từng sheet của từng ngày phục vụ công tác báo cáo cuối tháng nên mong mọi ng giúp.
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Chào bác Hai lúa Miền Tây,
Em đã xem hai file bác lọc dữ liệu ra theo sheet ở trên thấy hay quá.
Bác hướng dẫn em cách viết code để lọc dữ liệu như bác làm ở trên, để em có thể áp dụng với file dữ liệu bất kỳ.
Em mới bắt đầu tìm hiểu về VBA trong excel, mà công việc lại cần nên nhờ bác chỉ giáo.
Em xin chân thành cảm ơn ạ!
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn xem file đính kèm nhé.

File của bạn khá hay. Tuy nhiên bị 1 lỗi như này:
*> Nếu bảng tính không có vài dòng trống sau dòng dữ liệu cuối cùng, thì 2 dòng cuối cùng chứa dữ liệu sẽ không được liệt kê ra.

Mình nghĩ là do đoạn code này, nhưng không biết cách khắc phục ra sao.Mong bạn chỉ giúp.

Mã:
                     For j = 9 To Sheet8.Range("A8:P" & .[C65500].End(xlUp).Row).CurrentRegion.Rows.Count                            
                           If Sheet8.Cells(j, 3) = dv Then
                                   .Cells(k, 1) = k - 8
                                   Sheet8.Range("B" & j & ":P" & j).Copy
                                   .Cells(k, 2).PasteSpecial Paste:=xlPasteValues
                                   .[A1].Select
                                   k = k + 1
                                   .Cells(k, 1).EntireRow.Insert Shift:=xlDown
                            End If
 
Upvote 0
Chào các thầy và các bạn !

Em có file báo cáo đính kèm cần đếm tổng cước theo ngày tháng
và xuất báo cáo tổng hợp theo tỉnh thành.
Em nhờ thầy và các bạn giúp đỡ ah.

Thanks !
 

File đính kèm

Upvote 0
chào các bác !
Mình dựa vào code trên diễn đàn về xử lí file của mình, nhưng khi minh nhấp vào tách sheet thì chỉ ra được từ sheet 1 -> sheet 5 (tức là ngày 1 -> ngày 5 ) thôi còn những ngày còn lại không thể ra, không biết minh làm sai chỗ nào, mong mọi người giúp dùm
 

File đính kèm

Upvote 0
Chào bạn!
khi mình chạy code khi báo lỗi dòng này , bạn xem giúp mình
.Range("A1", Rng).SpecialCells(12).Copy
 
Upvote 0
chào các bác
em có file này ở sheet 2, em muốn tách nó thành các sheet con theo tên khác hàng riêng, ví dụ jing jang, hansung, samsung...
và khi em nhập dữ liệu cho sheet tổng thì các sheet con sẽ tự động cập nhật dữ liệu theo
sau đó cuối tháng thì sẽ sử dụng sheet con này để gởi email cho khách hàng
các bác giúp em với
Many thanks
 

File đính kèm

Upvote 0
Em có file tổng hợp của lương nhân viên, giờ muốn tách nó theo từng người(theo tên), nhưng không biết áp công thức thế nào, anh chị nào biết ,giúp em với ạ. em cảm ơn nhiều nhiều luôn ah
 

File đính kèm

Upvote 0
Em có file tổng hợp của lương nhân viên, giờ muốn tách nó theo từng người(theo tên), nhưng không biết áp công thức thế nào, anh chị nào biết ,giúp em với ạ. em cảm ơn nhiều nhiều luôn ah
Bạn nên lập 1 topic mới.
Trong bài viết bạn nêu rõ yêu cầu, dữ liệu nguồn là dữ liệu nào, mẫu biểu của dữ liệu cần tách ra.
 
Upvote 0
Bạn nên lập 1 topic mới.
Trong bài viết bạn nêu rõ yêu cầu, dữ liệu nguồn là dữ liệu nào, mẫu biểu của dữ liệu cần tách ra.
Dữ liệu tổng hợp nằm trong Sheet Hoàn Ứng CP TX, mình muốn tách dữ liệu tổng hợp này ra thành từng Sheet của từng tên tài xế khác nhau(Sheet Dang Viet Cong là tài xế 'Cong" Trong file tổng hợp, tương tự những tài xế kế bên đó bạn
 
Upvote 0
Dữ liệu tổng hợp nằm trong Sheet Hoàn Ứng CP TX, mình muốn tách dữ liệu tổng hợp này ra thành từng Sheet của từng tên tài xế khác nhau(Sheet Dang Viet Cong là tài xế 'Cong" Trong file tổng hợp, tương tự những tài xế kế bên đó bạn
Bạn xem các Sheet bảng lương của từng tài xế, có mấy cột mà mình không biết lấy dữ liệu từ đâu:
- Cột số 8: Đvt
- Cột số 12: Doanh thu
- Cột số 13: Lương chuyến
 
Upvote 0
Lúc giờ mình toàn làm thủ công, tự gỏ tay vào không, và quên luôn trong file tổng hợp đã thiếu phần này, mình mới add vô thêm, Vui lòng xem tập tin đính kèm giúp mình nhé. Cảm ơn bạn nhiều
 

File đính kèm

Upvote 0
Lúc giờ mình toàn làm thủ công, tự gỏ tay vào không, và quên luôn trong file tổng hợp đã thiếu phần này, mình mới add vô thêm, Vui lòng xem tập tin đính kèm giúp mình nhé. Cảm ơn bạn nhiều
Các sheet tên của bạn không đồng nhất về form. Tôi lấy Sheet CONG làm chuẩn. Bạn chuyển các sheet khác theo đúng chuẩn của sheet CONG. vùng dán dữ liệu là từ hàng 14 trở đi.
Mã:
Public Sub HoangUng()
Dim I, sArr, Dic As Object, dArr, Tem As String, K As Long, R As Long
Set Dic = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
With Sheets("HOAN UNG CP TX")
    sArr = .Range("A4", .Range("A" & Rows.Count).End(3)).Resize(, 44).Value
End With
    For I = 1 To UBound(sArr)
    If Len(sArr(I, 2)) Then
        Tem = sArr(I, 2)
        If Not Dic.exists(Tem) Then
            Dic.Add Tem, ""
            K = 0
            ReDim dArr(1 To 19, 1 To 13)
            For R = 1 To UBound(sArr)
                If sArr(R, 2) = Tem Then
                    K = K + 1
                    dArr(K, 1) = sArr(R, 1): dArr(K, 2) = sArr(R, 2): dArr(K, 3) = sArr(R, 3)
                    dArr(K, 4) = sArr(R, 6): dArr(K, 5) = sArr(R, 10): dArr(K, 6) = sArr(R, 11)
                    dArr(K, 7) = sArr(R, 12): dArr(K, 8) = sArr(R, 13): dArr(K, 9) = sArr(R, 14)
                    dArr(K, 10) = sArr(R, 15): dArr(K, 11) = sArr(R, 16)
                    dArr(K, 12) = sArr(R, 17): dArr(K, 13) = sArr(R, 18)
                End If
            Next
            If K Then Sheets(Tem).Range("A14").Resize(19, 13).Value = dArr: Erase dArr
        End If
    End If
    Next
Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Các sheet tên của bạn không đồng nhất về form. Tôi lấy Sheet CONG làm chuẩn. Bạn chuyển các sheet khác theo đúng chuẩn của sheet CONG. vùng dán dữ liệu là từ hàng 14 trở đi.
Mã:
Public Sub HoangUng()
Dim I, sArr, Dic As Object, dArr, Tem As String, K As Long, R As Long
Set Dic = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
With Sheets("HOAN UNG CP TX")
    sArr = .Range("A4", .Range("A" & Rows.Count).End(3)).Resize(, 44).Value
End With
    For I = 1 To UBound(sArr)
    If Len(sArr(I, 2)) Then
        Tem = sArr(I, 2)
        If Not Dic.exists(Tem) Then
            Dic.Add Tem, ""
            K = 0
            ReDim dArr(1 To 19, 1 To 13)
            For R = 1 To UBound(sArr)
                If sArr(R, 2) = Tem Then
                    K = K + 1
                    dArr(K, 1) = sArr(R, 1): dArr(K, 2) = sArr(R, 2): dArr(K, 3) = sArr(R, 3)
                    dArr(K, 4) = sArr(R, 6): dArr(K, 5) = sArr(R, 10): dArr(K, 6) = sArr(R, 11)
                    dArr(K, 7) = sArr(R, 12): dArr(K, 8) = sArr(R, 13): dArr(K, 9) = sArr(R, 14)
                    dArr(K, 10) = sArr(R, 15): dArr(K, 11) = sArr(R, 16)
                    dArr(K, 12) = sArr(R, 17): dArr(K, 13) = sArr(R, 18)
                End If
            Next
            If K Then Sheets(Tem).Range("A14").Resize(19, 13).Value = dArr: Erase dArr
        End If
    End If
    Next
Application.ScreenUpdating = True
End Sub
Mình xin có ý kiến 1 chút.
- Việc xác định kích thước của dArr như bạn đang làm có lẽ là không nên, chỉ cần sử dụng là:
Mã:
Redim dArr(1 To Ubound(sArr), 1 To 13)
- Khi gán dữ liệu vào các Sheets thì bạn nên sử dụng biến K
Mã:
If K Then Sheets(Tem).Range("A14").Resize(K, 13).Value = dArr
- Để sử dụng cho các tháng khác nhau, hoặc có sửa chữa phải chạy lại code, trước khi gán dữ liệu vào các Sheets bạn nên xóa các dữ liệu hiện có.
- Cuối cùng là nên thêm 1 dòng phụ tại các Sheets cần lấy dữ liệu, thể hiện số cột ở trong dữ liệu gốc, như vậy code sẽ ngắn gọn hơn.
Có gì chưa đúng, xin bạn thông cảm.
File đính kèm có code theo mẫu chuẩn của Sheets("CONG")
 

File đính kèm

Upvote 0
Mình xin có ý kiến 1 chút.
- Việc xác định kích thước của dArr như bạn đang làm có lẽ là không nên, chỉ cần sử dụng là:
Mã:
Redim dArr(1 To Ubound(sArr), 1 To 13)
- Khi gán dữ liệu vào các Sheets thì bạn nên sử dụng biến K
Mã:
If K Then Sheets(Tem).Range("A14").Resize(K, 13).Value = dArr
- Để sử dụng cho các tháng khác nhau, hoặc có sửa chữa phải chạy lại code, trước khi gán dữ liệu vào các Sheets bạn nên xóa các dữ liệu hiện có.
- Cuối cùng là nên thêm 1 dòng phụ tại các Sheets cần lấy dữ liệu, thể hiện số cột ở trong dữ liệu gốc, như vậy code sẽ ngắn gọn hơn.
Có gì chưa đúng, xin bạn thông cảm.
File đính kèm có code theo mẫu chuẩn của Sheets("CONG")

Tất cả những gì bạn nói tôi biết...nhưng tôi chỉ thích làm tới vậy thôi...
 
Upvote 0
chào các bác
em có file này ở sheet 2, em muốn tách nó thành các sheet con theo tên khác hàng riêng, ví dụ jing jang, hansung, samsung...
và khi em nhập dữ liệu cho sheet tổng thì các sheet con sẽ tự động cập nhật dữ liệu theo
sau đó cuối tháng thì sẽ sử dụng sheet con này để gởi email cho khách hàng
các bác giúp em với
Many thanks
Cái này cũng dễ mà, nhưng bạn theo dõi mà Merge and Center tùm lùm hết (tốn công xử lý quá).
 
Upvote 0
Em có 1 file tổng về giờ dạy của giáo viên xuất ra từ hệ thống. Em muốn tách thành từng sheet riêng mỗi sheet là 1 GV, trong sheet của 1 GV thì lại chia theo chương trình giáo viên đã dạy. Em có đính kèm file, mọi người xem giúp em được không ạ?

Mọi người giúp em được không ạ?
 

File đính kèm

Upvote 0
Hi Hai Lúa Miền Tây,
Có thể giúp mình tách ra cái form như vậy được không. Có tham khảo code của bạn để chỉnh sữa nhưng vẫn tréo oe vì không đúng format. Chân Thành cám ơn bạn
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom