XIN CODE BÁO CÁO CHO FILE

Liên hệ QC

tranchautrungduong

Thành viên chính thức
Tham gia
6/6/13
Bài viết
92
Được thích
40
Gửi anh chị em GPE

Nhờ anh chị xem và giúp em cái code để báo cáo các mục sau

Báo cáo theo tuần (dữ liệu sẽ vô sheet tuần mình chon), tương tự vậy cho báo cáo theo tình trạng vvv

em cảm ơn
 

File đính kèm

Upvote 0
À! mình hiểu rồi; Nhưng sẽ không giúp bạn theo hướng đó đâu;
Mỗi năm có 52 tuần & chỉ nên thiết kế 1 trang làm báo cáo tuần thôi;
Muốn tuần nào, ta lấy dữ liệu từ 'THop' đổ vô nớ!
 
Upvote 0
Mình chịu thôi.Bạn nói vậy thì đợi người hiểu ý bạn đi nhé.
Tức là sheet tổng hợp nó có nhiều loại (cột tuần và cột tình trạng), nôm na lọc tuần nào ra sheet tuần nấy!
Bài đã được tự động gộp:

À! mình hiểu rồi; Nhưng sẽ không giúp bạn theo hướng đó đâu;
Mỗi năm có 52 tuần & chỉ nên thiết kế 1 trang làm báo cáo tuần thôi;
Muốn tuần nào, ta lấy dữ liệu từ 'THop' đổ vô nớ!
Bạn giúp mình như vậy nhé! và cái báo cáo kết hợp giữa tuần và tình trạng nữa! mình dùng advanced filter bằng tay đc mà thấy nó chậm!
 
Upvote 0
Tức là sheet tổng hợp nó có nhiều loại (cột tuần và cột tình trạng), nôm na lọc tuần nào ra sheet tuần nấy!
Bài đã được tự động gộp:


Bạn giúp mình như vậy nhé! và cái báo cáo kết hợp giữa tuần và tình trạng nữa! mình dùng advanced filter bằng tay đc mà thấy nó chậm!
Điều kiện là cái tuần của bạn viết 1 kiểu.Ở trong 1 kiểu khác làm sao để xác định được sheets để đưa dữ liệu vào.
 
Upvote 0
Điều kiện là cái tuần của bạn viết 1 kiểu.Ở trong 1 kiểu khác làm sao để xác định được sheets để đưa dữ liệu vào.
ở đây mình ví dụ cho bạn hiểu, nếu cần cả 2 sẽ cùng 1 dạng!
Bài đã được tự động gộp:

Điều kiện là cái tuần của bạn viết 1 kiểu.Ở trong 1 kiểu khác làm sao để xác định được sheets để đưa dữ liệu vào.
nói thật, kiến thức VBA mình kém mới hỏi anh em! bạn giúp đc thì giúp mình rất chân thành cảm ơn! nhưng thấy độ khó dễ trong bạn! dù sao cũng rất cám ơn bạn đã quan tâm topic của mình!
 
Upvote 0
ở đây mình ví dụ cho bạn hiểu, nếu cần cả 2 sẽ cùng 1 dạng!
Bài đã được tự động gộp:


nói thật, kiến thức VBA mình kém mới hỏi anh em! bạn giúp đc thì giúp mình rất chân thành cảm ơn! nhưng thấy độ khó dễ trong bạn! dù sao cũng rất cám ơn bạn đã quan tâm topic của mình!
Mà theo mình bạn nên làm theo hướng dẫn của bài 5.Bạn làm 1 sheets xem báo cáo.Theo tuần,theo trạng thái và nhiều kiểu nữa.Nó đơn giản hơn.
 
Upvote 0
CHÂN THÀNH CẢM ƠN BẠN!
Đây bạn xem.Đây là code tìm kiếm đủ cả 3 điều kiện.Nếu muốn tìm kiếm ít điều kiện hơn thì mình chỉnh sau.
Mã:
Sub baocao()
Dim arr, arr1
Dim a As Long, b As Long, c As Long, lr As Long, i As Long, j As Long
Dim dk As String, dks As String
With Sheets("Tong Hop")
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr < 2 Then MsgBox "khong co du lieu": Exit Sub
     arr = .Range("A2:W" & lr).Value
     ReDim arr1(1 To UBound(arr, 1), 1 To 23)
End With
With Sheets("bao cao")
     dk = .Range("C3").Value & "#" & .Range("c4").Value & "#" & .Range("C5").Value
     For i = 1 To UBound(arr, 1)
         dks = arr(i, 2) & "#" & arr(i, 3) & "#" & arr(i, 12)
         If UCase(dk) = UCase(dks) Then
            a = a + 1
            arr1(a, 1) = a
                For j = 2 To 23
                    arr1(a, j) = arr(i, j)
                Next j
         End If
     Next i
     b = .Range("B" & Rows.Count).End(xlUp).Row
     If b > 11 Then .Range("A12:W" & b).ClearContents
     If a Then .Range("A12").Resize(a, 23).Value = arr1
End With
End Sub
 

File đính kèm

Upvote 0
Đây bạn xem.Đây là code tìm kiếm đủ cả 3 điều kiện.Nếu muốn tìm kiếm ít điều kiện hơn thì mình chỉnh sau.
Mã:
Sub baocao()
Dim arr, arr1
Dim a As Long, b As Long, c As Long, lr As Long, i As Long, j As Long
Dim dk As String, dks As String
With Sheets("Tong Hop")
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr < 2 Then MsgBox "khong co du lieu": Exit Sub
     arr = .Range("A2:W" & lr).Value
     ReDim arr1(1 To UBound(arr, 1), 1 To 23)
End With
With Sheets("bao cao")
     dk = .Range("C3").Value & "#" & .Range("c4").Value & "#" & .Range("C5").Value
     For i = 1 To UBound(arr, 1)
         dks = arr(i, 2) & "#" & arr(i, 3) & "#" & arr(i, 12)
         If UCase(dk) = UCase(dks) Then
            a = a + 1
            arr1(a, 1) = a
                For j = 2 To 23
                    arr1(a, j) = arr(i, j)
                Next j
         End If
     Next i
     b = .Range("B" & Rows.Count).End(xlUp).Row
     If b > 11 Then .Range("A12:W" & b).ClearContents
     If a Then .Range("A12").Resize(a, 23).Value = arr1
End With
End Sub
Cám ơn bạn rất nhiều!

cái đó báo cáo kết hợp 3 mục (tuần + tình trạng + ngày cut off), khi mình cũng đồng thời trên cái sub báo cáo đó mình chỉ muốn báo cáo từng cái như sau đc k!
1/ báo cáo tuần + tình trạng + ngày cut off => (đã có code)
2/ báo cáo tuần + tình trạng (tất cả) + ngày cut off
3/ báo cáo tuần + tình trạng + ngày cut off (tất cả)
4/ báo cáo từ tuần 2 đến tuần 4 (chỉ tuần)

cám ơn bạn!
 
Upvote 0
Cám ơn bạn rất nhiều!

cái đó báo cáo kết hợp 3 mục (tuần + tình trạng + ngày cut off), khi mình cũng đồng thời trên cái sub báo cáo đó mình chỉ muốn báo cáo từng cái như sau đc k!
1/ báo cáo tuần + tình trạng + ngày cut off => (đã có code)
2/ báo cáo tuần + tình trạng (tất cả) + ngày cut off
3/ báo cáo tuần + tình trạng + ngày cut off (tất cả)
4/ báo cáo từ tuần 2 đến tuần 4 (chỉ tuần)

cám ơn bạn!
Vấn đề thứ 4 không giải quyết được trong sub đấy.Vì tìm kiếm của bạn chỉ có 1 tuần nên nó không hiểu.Còn mấy vấn đề trước thì được.Bạn nên chỉnh lại dữ liệu.Mình code luôn 1 thể.Ví dụ thêm 1 cái báo cáo là từ tuần thứ mấy đến tuần thứ mấy.
 
Upvote 0
Vấn đề thứ 4 không giải quyết được trong sub đấy.Vì tìm kiếm của bạn chỉ có 1 tuần nên nó không hiểu.Còn mấy vấn đề trước thì được.Bạn nên chỉnh lại dữ liệu.Mình code luôn 1 thể.Ví dụ thêm 1 cái báo cáo là từ tuần thứ mấy đến tuần thứ mấy.
CÁM ƠN BẠN, ĐỂ MÌNH CHỈNH FILE VÀ GỬI LẠI BẠN
Bài đã được tự động gộp:

Vấn đề thứ 4 không giải quyết được trong sub đấy.Vì tìm kiếm của bạn chỉ có 1 tuần nên nó không hiểu.Còn mấy vấn đề trước thì được.Bạn nên chỉnh lại dữ liệu.Mình code luôn 1 thể.Ví dụ thêm 1 cái báo cáo là từ tuần thứ mấy đến tuần thứ mấy.

Thân gửi bạn! Mình có thêm 2 mục nữa (bạn giúp luôn hen)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
CÁM ƠN BẠN, ĐỂ MÌNH CHỈNH FILE VÀ GỬI LẠI BẠN
Bài đã được tự động gộp:



Thân gửi bạn! Mình có thêm 2 mục nữa (bạn giúp luôn hen)
Đây bạn xem.
Mã:
Sub baocao1()
Dim arr, arr1, T, aT, aso()
Dim a As Long, b As Long, c As Long, lr As Long, i As Long, j As Long, k As Long
Dim dk As String, dks As String, Tr As Long, Ts As Long, d As Long
With Sheets("Tong Hop")
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr < 2 Then MsgBox "khong co du lieu": Exit Sub
     arr = .Range("A2:W" & lr).Value
     ReDim arr1(1 To UBound(arr, 1), 1 To 23)
End With
With Sheets("bao cao")
     T = Array(.Range("c4").Value, .Range("C5").Value, .Range("c6").Value, .Range("c7").Value)
     aT = Array(4, 13, 3, 12)
     If .Range("C2").Value = Empty Then Tr = 0 Else Tr = Right(.Range("C2").Value, 2)
     If .Range("C3").Value = Empty Then Ts = 100 Else Ts = Right(.Range("C3").Value, 2)
     For i = LBound(T) To UBound(T)
         If T(i) <> Empty Then
            c = c + 1
            If dk = Empty Then
               dk = T(i)
            Else
               dk = dk & "#" & T(i)
            End If
         ReDim Preserve aso(1 To c)
         aso(c) = aT(i)
         End If
    Next i
     For i = 1 To UBound(arr, 1)
         dks = Empty
         On Error Resume Next
         For k = LBound(aso) To UBound(aso)
             If dks = Empty Then
                dks = arr(i, aso(k))
             Else
                dks = dks & "#" & arr(i, aso(k))
             End If
         Next k
        d = Right(arr(i, 2), 2)
      If d >= Tr And d <= Ts Then
         If UCase(dk) = UCase(dks) Then
            a = a + 1
            arr1(a, 1) = a
                For j = 2 To 23
                    arr1(a, j) = arr(i, j)
                Next j
         End If
      End If
     Next i
     b = .Range("B" & Rows.Count).End(xlUp).Row
     If b > 11 Then .Range("A12:W" & b).ClearContents
     If a Then .Range("A12").Resize(a, 23).Value = arr1
End With
End Sub
 

File đính kèm

Upvote 0
Đây bạn xem.
Mã:
Sub baocao1()
Dim arr, arr1, T, aT, aso()
Dim a As Long, b As Long, c As Long, lr As Long, i As Long, j As Long, k As Long
Dim dk As String, dks As String, Tr As Long, Ts As Long, d As Long
With Sheets("Tong Hop")
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr < 2 Then MsgBox "khong co du lieu": Exit Sub
     arr = .Range("A2:W" & lr).Value
     ReDim arr1(1 To UBound(arr, 1), 1 To 23)
End With
With Sheets("bao cao")
     T = Array(.Range("c4").Value, .Range("C5").Value, .Range("c6").Value, .Range("c7").Value)
     aT = Array(4, 13, 3, 12)
     If .Range("C2").Value = Empty Then Tr = 0 Else Tr = Right(.Range("C2").Value, 2)
     If .Range("C3").Value = Empty Then Ts = 100 Else Ts = Right(.Range("C3").Value, 2)
     For i = LBound(T) To UBound(T)
         If T(i) <> Empty Then
            c = c + 1
            If dk = Empty Then
               dk = T(i)
            Else
               dk = dk & "#" & T(i)
            End If
         ReDim Preserve aso(1 To c)
         aso(c) = aT(i)
         End If
    Next i
     For i = 1 To UBound(arr, 1)
         dks = Empty
         On Error Resume Next
         For k = LBound(aso) To UBound(aso)
             If dks = Empty Then
                dks = arr(i, aso(k))
             Else
                dks = dks & "#" & arr(i, aso(k))
             End If
         Next k
        d = Right(arr(i, 2), 2)
      If d >= Tr And d <= Ts Then
         If UCase(dk) = UCase(dks) Then
            a = a + 1
            arr1(a, 1) = a
                For j = 2 To 23
                    arr1(a, j) = arr(i, j)
                Next j
         End If
      End If
     Next i
     b = .Range("B" & Rows.Count).End(xlUp).Row
     If b > 11 Then .Range("A12:W" & b).ClearContents
     If a Then .Range("A12").Resize(a, 23).Value = arr1
End With
End Sub
Cám ơn bạn nhiều lắm.
 
Upvote 0
Web KT

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

Back
Top Bottom