[Help] Lọc và xuất dữ liệu sang sheet mới với điều kiện là ngày tháng. (3 người xem)

Liên hệ QC

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

bugatino

Thành viên chính thức
Tham gia
14/7/10
Bài viết
54
Được thích
3
Xin chào các bạn GPE.
Mình có vấn đề như sau, mong nhận được sự trợ giúp của các bạn:

Mình có 1 file là Event Calendar. Trong đó có chứa sheet Data (chứa dữ liệu cần lọc - chính là lịch học tập trung và thi của các lớp). Bây giờ mình muốn lọc dữ liệu theo tháng và copy sang sheet mới, mỗi tháng 1 sheet thì làm thế nào?

Khi lọc có một số đk sau:
+ Không lấy lớp DDT*, CDT*
+ Không lấy môn thi FIN302

Trong file đính kèm mình đã làm sẵn Tháng 1 để các bạn có thể hiểu rõ hơn kết quả cần làm.

Cám ơn các bạn GPE nhiều!
 

File đính kèm

Xin chào các bạn GPE.
Mình có vấn đề như sau, mong nhận được sự trợ giúp của các bạn:

Mình có 1 file là Event Calendar. Trong đó có chứa sheet Data (chứa dữ liệu cần lọc - chính là lịch học tập trung và thi của các lớp). Bây giờ mình muốn lọc dữ liệu theo tháng và copy sang sheet mới, mỗi tháng 1 sheet thì làm thế nào?

Khi lọc có một số đk sau:
+ Không lấy lớp DDT*, CDT*
+ Không lấy môn thi FIN302

Trong file đính kèm mình đã làm sẵn Tháng 1 để các bạn có thể hiểu rõ hơn kết quả cần làm.

Cám ơn các bạn GPE nhiều!

Trong sheet tháng, mình chưa hiểu làm thế nào để xác định trường địa điểm trong sheet Data. Có dấu hiệu gì để biết được là khóa này học ở Hà Nội hay TPHCM ? Cái chỗ màu đỏ nó ở trường nào vậy bạn ?
 
Lần chỉnh sửa cuối:
Trong sheet tháng, mình chưa hiểu làm thế nào để xác định trường địa điểm trong sheet Data. Có dấu hiệu gì để biết được là khóa này học ở Hà Nội hay TPHCM ? Cái chỗ màu đỏ nó ở trường nào vậy bạn ?
Từ cột E-V là của HN còn từ W-AN là của HCM bạn ah:
untitled1.JPG
Cái lớp CDT* và DDT* sẽ nằm trong vùng lớp của HN hoặc lớp của HCM, đây cũng là lớp như các lớp bình thường khác, nhưng trong lịch sự kiện không cần có những lớp này, nên mình muốn loại nó ra.
 
Lần chỉnh sửa cuối:
Từ cột E-V là của HN còn từ W-AN là của HCM bạn ah:
View attachment 87280
Cái lớp CDT* và DDT* sẽ nằm trong vùng lớp của HN hoặc lớp của HCM, đây cũng là lớp như các lớp bình thường khác, nhưng trong lịch sự kiện không cần có những lớp này, nên mình muốn loại nó ra.
Cái vụ CDT*,DDT* thì chưa hiểu lắm, Cái FIN302 cũng chẳng thấy đâu.
Thử với VBA xem, tư sheet Data chuyển sang sheet khác là code chạy, muốn lọc tháng nào thì nhập số vào ô A1 của sheet đó.
 

File đính kèm

Cái vụ CDT*,DDT* thì chưa hiểu lắm, Cái FIN302 cũng chẳng thấy đâu.
Thử với VBA xem, tư sheet Data chuyển sang sheet khác là code chạy, muốn lọc tháng nào thì nhập số vào ô A1 của sheet đó.

Cám ơn bác Ba Tê rất nhiều. Em đã sửa macro của bác để chỉ lấy dữ liệu của vùng có giá trị thôi, những vùng không có giá trị thì bị bỏ qua. Do vậy đoạn nào không có giá trị nó cứ bị cách hẳn ra. (Như hình)
GPE.JPG
Bác có thể giúp em cho nó liền nhau (dữ liệu được liệt kê 1 cách liên tục) được không?
 
Lần chỉnh sửa cuối:
Cám ơn bác Ba Tê rất nhiều. Em đã sửa macro của bác để chỉ lấy dữ liệu của vùng có giá trị thôi, những vùng không có giá trị thì bị bỏ qua. Do vậy đoạn nào không có giá trị nó cứ bị cách hẳn ra. (Như hình)
View attachment 87315
Bác có thể giúp em cho nó liền nhau (dữ liệu được liệt kê 1 cách liên tục) được không?
Chép đè code này lên code cũ thử xem, tui cũng chưa hiểu ý bạn lắm.
PHP:
Public Sub GPE()
Dim Rng(), Arr(), I As Long, J As Long, K As Long, Tem As Long, L As Long, Ws As Worksheet
Dim Arr2(), L2 As Long, K2 As Long
    Rng = Sheets("Data").Range(Sheets("Data").[A3], Sheets("Data").[A65000].End(xlUp)).Resize(, 42).Value
For Each Ws In Worksheets
    ReDim Arr(1 To UBound(Rng, 1) * 2, 1 To 24)
    ReDim Arr2(1 To UBound(Rng, 1) * 2, 1 To 24)
        K = 0: K2 = 0
    If Ws.Name <> "Data" Then
        Tem = Ws.[A1].Value
        For I = 1 To UBound(Rng, 1)
            If Rng(I, 3) <> "FIN302" Then
                If Month(Rng(I, 42)) = Tem Then
                    K = K + 1: L = 0: K2 = K2 + 1: L2 = 0
                    Arr(K, 1) = Rng(I, 42): Arr(K, 2) = "HN": Arr(K, 3) = Rng(I, 1)
                    Arr(K, 4) = Rng(I, 2): Arr(K, 5) = Rng(I, 3): Arr(K, 6) = Rng(I, 4)
                    Arr2(K2, 1) = Rng(I, 42): Arr2(K2, 2) = "HCM": Arr2(K2, 3) = Rng(I, 1)
                    Arr2(K2, 4) = Rng(I, 2): Arr2(K2, 5) = Rng(I, 3): Arr2(K2, 6) = Rng(I, 4)
                        For J = 7 To 24
                            If Rng(I, J - 2) <> "" Then L = L + 1
                            If Rng(I, J + 16) <> "" Then L2 = L2 + 1
                            Arr(K, J) = Rng(I, J - 2)
                            Arr2(K2, J) = Rng(I, J + 16)
                        Next J
                            If L = 0 Then K = K - 1
                            If L2 = 0 Then K2 = K2 - 1
                End If
            End If
        Next I
            Ws.[A3:X10000].ClearContents
        If K Then Ws.[A3].Resize(K, 24).Value = Arr
        If K2 Then Ws.[A65000].End(xlUp).Offset(1).Resize(K2, 24).Value = Arr2
    End If
Next
End Sub
 
Lần chỉnh sửa cuối:
Cám ơn bác Ba Tê rất nhiều ah! Đúng ý em rồi bác ah!
 
Web KT

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

Back
Top Bottom