Lọc và chia danh sách (1 người xem)

Liên hệ QC

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

Thuyanhanoi

Thành viên thường trực
Tham gia
15/10/12
Bài viết
304
Được thích
154
Nghề nghiệp
Nhân viên
- Em có "vọc" một đoạn code lọc và chia danh sách như sau:
Mã:
Option Explicit

Public Sub Danh_sach_lop()
Application.ScreenUpdating = False
Dim I As Long, J As Long, K As Long, sArr(), dArr(), Nganh As String, He As String, Ma As String
Dim So_bat_dau As Long, So_lop As Long, DK As Long, Tem As Long, So_hoc_sinh As Long ', Cot As Long, Rws As Long
With Sheets("DATA")
    sArr = .Range(.[A6], .[A65000].End(xlUp)).Resize(, 14).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 13)
With Sheets("DS_LOP")
    Nganh = .[P1].Value
    He = .[P2].Value
    Ma = .[P3].Value
    So_bat_dau = .[P4].Value - 1
    So_lop = .[P5].Value
    For I = 1 To UBound(sArr, 1)
        If sArr(I, 10) = Nganh Then
          If sArr(I, 11) = He Then
          So_hoc_sinh = So_hoc_sinh + 1
          Tem = (So_hoc_sinh \ So_lop) + 1
            K = K + 1
            dArr(K, 1) = K: So_bat_dau = So_bat_dau + 1
            dArr(K, 2) = IIf(.[P3] <> Empty, Ma & Format(So_bat_dau, "000"), sArr(I, 2))
            For J = 3 To 13
                dArr(K, J) = sArr(I, J)
            Next J
            If K = Tem Then
                'So_bat_dau = 0
                'Cot = J
                'dArr(K, J) = sArr(I, J)
            End If
          End If
        End If
    Next I
    If K Then
        With .[A7].Resize(Tem, 13)
            .Value = dArr
            .Borders.LineStyle = 1
            .Borders(xlInsideHorizontal).Weight = xlHairline
        End With
            .[C7].Resize(Tem, 2).Borders(xlInsideVertical).LineStyle = xlNone
    End If
End With
Application.ScreenUpdating = True
End Sub
- Toàn bộ danh sách tại sheet(DATA) nay cần lọc theo (ngành; hệ đào tạo) sang sheet(DS_LOP) và phân chia theo số lớp cần chia được nhập vào từ cell [P5].
- Code trên mới chỉ lọc được 1 phần danh sách (chưa đúng với yêu cầu)
- Kết quả lọc và chia danh sách (đúng) em đã làm thủ công trong file đính kèm.
- Em mong được các anh chị sửa giúp code trên để lọc được đúng yêu cầu như trong file đính kèm.
- Em xin cảm ơn !.
 

File đính kèm

Lần chỉnh sửa cuối:
Hình như bắt đầu từ DATA, yêu cầu chưa hợp lý nên loay hoay như tơ vò.
- Mọi chuyện nên làm từ DATA, thành 1 CSDL chuẩn, từ đó muốn lọc cái gì thì làm cái đó.
- Trong DATA Tạo Mã cho cột B, xếp lớp cho cột O. (Tự làm cho từng ngành)
+Bấm tạo mã
+ Chọn ngành, Hệ đào tạo, số lớp cần chia
+ Bấm Chia Lớp
- Trong DS_LOP, chọn mã ô P2, Bấm nút DS SV
- Sheet Chu_Thich phải tạo biểu chuẩn dò tìm từng mã, ngành,...
- Được Thầy BA Tê giúp code tạo mã cho sheet(DATA) và lọc sinh viên đúng là một giải pháp tổng thể. Tạo mã và biết được số lượng sinh viên để chia lớp luôn để thực hiện việc phân lớp. Thật là tuyệt!. Em nghiên cứu sử dụng khi nào mắc em lại "La lên ạ"! :-=.
- Một lần nữa em cảm Anh gtri đã giúp em (Cách làm và những giải thích để em hiểu!.)
- Em xin cảm ơn sự giúp đỡ của tất cả mọi người!.
 
Upvote 0
Web KT

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

Back
Top Bottom