Nhờ các bác hỗ trợ lọc dữ liệu giúp em với

Liên hệ QC

Diệp thu

Thành viên mới
Tham gia
14/11/22
Bài viết
2
Được thích
0
Bác nào hỗ trợ em lọc dữ liệu dùm em theo bảng như hình, chứ cứ mỗi lần nhìn cái file là em choáng hết cả đầu sợ nhìn nhằm lắm1668479262489.png
 

File đính kèm

  • TKB.xls
    52 KB · Đọc: 30
thanks các bác đã hỗ trợ vấn đề đã dc giải quyết
 
thanks các bác đã hỗ trợ vấn đề đã dc giải quyết
Cách xử lý của bạn là gì thì có thể đưa lên cho mọi người tham khảo.
Tôi mạn phép đưa cách giải quyết của tôi bằng code VBA
PHP:
Sub TimeTable()
    Dim sArr(), Res()
    Dim lR As Long, Rw As Long, col As Integer
    Dim iR As Long, R As Long, iC As Integer, J As Long, K As Long
    
    'Dong cuoi cung co du lieu
    lR = Sheet1.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
    'Mang 2 chieu chua toan bo du lieu goc
    sArr() = Sheet1.Range("A3:S" & (lR + 10)).Value 'Luu y tang them 1 cot va 10 dong
    'So luong dong (can tren chieu thu nhat)
    Rw = UBound(sArr, 1)
    'So luong cot (can tren chieu thu hai)
    col = UBound(sArr, 2)
    'Quy dinh kich thuoc mang ket qua
    ReDim Res(1 To 10000, 1 To 5)
    
    'Chay vong lap qua tung vung thu theo dong
    For iR = 3 To Rw
        If Len(sArr(iR, 1)) Then    'Truong hop co thong tin Thu 2/3/4/.../7
            'Vong lap qua tung vung Khoi theo cot
            For iC = 2 To col
                If sArr(1, iC) = "Ti" & ChrW(7871) & "t" Then            'Chon dung cot de phan chia cac Khoi
                    'Chay vong lap qua tung lop
                    J = 1
                    Do Until sArr(2, iC + J) = ""       'Truong hop co thong tin Lop 6/1;6/2,...
                        'Chay vong lap qua tung dong cua tung Thu 2/3/4
                        For R = 1 To 20 Step 2
                            If Len(sArr(iR + R - 1, iC + J)) Then   'Truong hop co thong tin mon hoc
                                K = K + 1
                                Res(K, 1) = sArr(iR, 1)                 'Thu 2/3/4.../7
                                Res(K, 2) = sArr(iR + R - 1, iC)        'Tiet
                                Res(K, 3) = sArr(2, iC + J)             'Lop 6/1;6/2;...
                                Res(K, 4) = sArr(iR + R - 1, iC + J)    'Mon hoc
                                Res(K, 5) = sArr(iR + R, iC + J)        'Giao vien
                            End If
                        Next R
                        J = J + 1
                    Loop
                End If
            Next iC
        End If
    Next iR
    
    'Xoa du lieu cu
    Sheet2.UsedRange.Offset(1).ClearContents
    'Dien ket qua
    Sheet2.Range("A2").Resize(K, 5) = Res
    
    'Thong bao ket qua
    MsgBox "Done", vbInformation, "Daily Excel"
End Sub
 
Cách xử lý của bạn là gì thì có thể đưa lên cho mọi người tham khảo.
Tôi mạn phép đưa cách giải quyết của tôi bằng code VBA
PHP:
Sub TimeTable()
    Dim sArr(), Res()
    Dim lR As Long, Rw As Long, col As Integer
    Dim iR As Long, R As Long, iC As Integer, J As Long, K As Long
   
    'Dong cuoi cung co du lieu
    lR = Sheet1.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
    'Mang 2 chieu chua toan bo du lieu goc
    sArr() = Sheet1.Range("A3:S" & (lR + 10)).Value 'Luu y tang them 1 cot va 10 dong
    'So luong dong (can tren chieu thu nhat)
    Rw = UBound(sArr, 1)
    'So luong cot (can tren chieu thu hai)
    col = UBound(sArr, 2)
    'Quy dinh kich thuoc mang ket qua
    ReDim Res(1 To 10000, 1 To 5)
   
    'Chay vong lap qua tung vung thu theo dong
    For iR = 3 To Rw
        If Len(sArr(iR, 1)) Then    'Truong hop co thong tin Thu 2/3/4/.../7
            'Vong lap qua tung vung Khoi theo cot
            For iC = 2 To col
                If sArr(1, iC) = "Ti" & ChrW(7871) & "t" Then            'Chon dung cot de phan chia cac Khoi
                    'Chay vong lap qua tung lop
                    J = 1
                    Do Until sArr(2, iC + J) = ""       'Truong hop co thong tin Lop 6/1;6/2,...
                        'Chay vong lap qua tung dong cua tung Thu 2/3/4
                        For R = 1 To 20 Step 2
                            If Len(sArr(iR + R - 1, iC + J)) Then   'Truong hop co thong tin mon hoc
                                K = K + 1
                                Res(K, 1) = sArr(iR, 1)                 'Thu 2/3/4.../7
                                Res(K, 2) = sArr(iR + R - 1, iC)        'Tiet
                                Res(K, 3) = sArr(2, iC + J)             'Lop 6/1;6/2;...
                                Res(K, 4) = sArr(iR + R - 1, iC + J)    'Mon hoc
                                Res(K, 5) = sArr(iR + R, iC + J)        'Giao vien
                            End If
                        Next R
                        J = J + 1
                    Loop
                End If
            Next iC
        End If
    Next iR
   
    'Xoa du lieu cu
    Sheet2.UsedRange.Offset(1).ClearContents
    'Dien ket qua
    Sheet2.Range("A2").Resize(K, 5) = Res
   
    'Thong bao ket qua
    MsgBox "Done", vbInformation, "Daily Excel"
End Sub
Code chuẩn nhưng chắc phải thêm định dạng "lớp". Vì mình chạy nó chuyển sang dạng "date" bạn ạ.
 

File đính kèm

  • Form TKB.xlsb
    95.6 KB · Đọc: 18
Như thế này đã đúng ý bạn chưa?
pass: watch?v=re1dO8wyCD0
 

File đính kèm

  • TKB1.rar
    23.3 KB · Đọc: 6
Web KT

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

Back
Top Bottom