tranchautrungduong
Thành viên chính thức
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
- Tham gia
- 6/6/13
- Bài viết
- 92
- Được thích
- 40
THÌ CHỌN BÁO CÁO THEO TUẦN, TẤT CẢ NHỮNG GÌ SẼ ĐC QUA SHEET TUẦN (VI DU FILE DINH KEM), MỞ TỪNG SHEET XEMBạn nói rõ hơn và cho cái ví dụ cụ thể xem nào.
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!Mình chịu thôi.Bạn nói vậy thì đợi người hiểu ý bạn đi nhé.
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!À! 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ớ!
Đ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.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!
ở đây mình ví dụ cho bạn hiểu, nếu cần cả 2 sẽ cùng 1 dạng!Đ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!Đ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.
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.ở đâ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!
cách đó đc và hay! nhưng mình chưa có code đó ngoài dùng advanced filter , bạn hộ mình nhe!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.
CHÂN THÀNH CẢM ƠN BẠN!Bạn gửi File mẫu đây mình code.
Đâ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.CHÂN THÀNH CẢM ƠN BẠN!
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!Đâ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
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 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!
CÁM ƠN BẠN, ĐỂ MÌNH CHỈNH FILE VÀ GỬI LẠI BẠNVấ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.
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.
Đây bạn xem.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)
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.Đâ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