tự động Tách thành hai danh sách theo điều kiện

Liên hệ QC

chidung2009

Thành viên hoạt động
Tham gia
12/9/12
Bài viết
123
Được thích
8
Mình có một file excel có dữ liệu từ cột A7:C50.
nhập dữ liệu vào cột B và khi chọn Thẩm phán hoặc Thư ký theo List thì sẽ tự động cập nhật tạo thành 2 danh sách theo bảng thẩm phán (R7 : T) và thư ký (U7: W ) có số thứ tự tự động tăng theo từ danh sách.
Mình chân thành cảm ơn
 

File đính kèm

  • Tach loc danh sach.xlsm
    17.1 KB · Đọc: 14
Mình có một file excel có dữ liệu từ cột A7:C50.
nhập dữ liệu vào cột B và khi chọn Thẩm phán hoặc Thư ký theo List thì sẽ tự động cập nhật tạo thành 2 danh sách theo bảng thẩm phán (R7 : T) và thư ký (U7: W ) có số thứ tự tự động tăng theo từ danh sách.
Mình chân thành cảm ơn
Bạn thử đoạn code sau xem
Mã:
Sub PhanTich()
Dim i As Long, aDuLieu(), KetQua(), k As Long, Jk As Long
Dim Dieukien As Variant
With sHome
   aDuLieu = .Range("B8:C" & .Cells(.Rows.Count, "B").End(xlUp).Row).Value
End With
    ReDim KetQua(1 To UBound(aDuLieu, 1), 1 To 6)
  For i = 1 To UBound(aDuLieu, 1)
    Dieukien = "Th" & ChrW(7849) & "m ph" & ChrW(225) & "n"
    If aDuLieu(i, 2) Like Dieukien Then
        k = k + 1
        KetQua(k, 1) = k
        KetQua(k, 2) = aDuLieu(i, 1)
        KetQua(k, 3) = aDuLieu(i, 2)
    Else
        Jk = Jk + 1
        KetQua(Jk, 4) = Jk
        KetQua(Jk, 5) = aDuLieu(i, 1)
        KetQua(Jk, 6) = aDuLieu(i, 2)
    End If
   Next
With sHome
    .Range("R9:W10000").ClearContents
If k <> 0 Or Jk <> 0 Then
    .Range("R9").Resize(UBound(KetQua), 6).Value = KetQua
End If
End With
End Sub
 

File đính kèm

  • Tach loc danh sach.xlsm
    21.6 KB · Đọc: 14
Upvote 0
Bạn thử đoạn code sau xem
Mã:
Sub PhanTich()
Dim i As Long, aDuLieu(), KetQua(), k As Long, Jk As Long
Dim Dieukien As Variant
With sHome
   aDuLieu = .Range("B8:C" & .Cells(.Rows.Count, "B").End(xlUp).Row).Value
End With
    ReDim KetQua(1 To UBound(aDuLieu, 1), 1 To 6)
  For i = 1 To UBound(aDuLieu, 1)
    Dieukien = "Th" & ChrW(7849) & "m ph" & ChrW(225) & "n"
    If aDuLieu(i, 2) Like Dieukien Then
        k = k + 1
        KetQua(k, 1) = k
        KetQua(k, 2) = aDuLieu(i, 1)
        KetQua(k, 3) = aDuLieu(i, 2)
    Else
        Jk = Jk + 1
        KetQua(Jk, 4) = Jk
        KetQua(Jk, 5) = aDuLieu(i, 1)
        KetQua(Jk, 6) = aDuLieu(i, 2)
    End If
   Next
With sHome
    .Range("R9:W10000").ClearContents
If k <> 0 Or Jk <> 0 Then
    .Range("R9").Resize(UBound(KetQua), 6).Value = KetQua
End If
End With
End Sub
Gần đúng ý của mình rồi. Cảm ơn bạn đã giúp đỡ
 
Upvote 0
Mình có một file excel có dữ liệu từ cột A7:C50.
nhập dữ liệu vào cột B và khi chọn Thẩm phán hoặc Thư ký theo List thì sẽ tự động cập nhật tạo thành 2 danh sách theo bảng thẩm phán (R7 : T) và thư ký (U7: W ) có số thứ tự tự động tăng theo từ danh sách.
Mình chân thành cảm ơn
Thử sử dụng Filter từ Sheet Theo dõi rồi Copy qua từng sheet để thuận tiện cho việc in danh sách..
 

File đính kèm

  • Cap nhat danh sach.xlsm
    22.7 KB · Đọc: 10
Upvote 0
Cách khác nữa nè, bạn thử tham khảo cho vui!
 

File đính kèm

  • GPE.rar
    15.9 KB · Đọc: 11
Upvote 0
Giải pháp của bạn không có "tự động"

View attachment 230720
Muốn tự động thì thêm code sau vào sheet Theo dõi.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Call Filter_Copy
End Sub

Do mỗi lần thay đổi nội dung thì gây nhấp nháy màn hình nên phải thêm 2 dòng code sau vào đầu và cuối của Module.
Mã:
Sub Filter_Copy()
    Application.ScreenUpdating = False

    ' Code cũ'

    Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom