Lọc dữ liệu theo điều kiện

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Tran Viet Nam

Thành viên mới
Tham gia
10/9/18
Bài viết
9
Được thích
4
File của em có 2 sheet TKB và TH. Sheet TKB là thời khóa biểu theo tiết của lớp. Em muốn lọc dữ liệu sang sheet TH để biết thời khóa biểu theo giáo viên (như file đính kèm). Nhờ các anh chị lập giùm công thức. Em cám ơn ạ!
 

File đính kèm

  • TKB.xlsx
    98.5 KB · Đọc: 20
File của em có 2 sheet TKB và TH. Sheet TKB là thời khóa biểu theo tiết của lớp. Em muốn lọc dữ liệu sang sheet TH để biết thời khóa biểu theo giáo viên (như file đính kèm). Nhờ các anh chị lập giùm công thức. Em cám ơn ạ!
Bạn xem thử file đã đúng yêu cầu chưa?
 

File đính kèm

  • TKB.xlsx
    102.4 KB · Đọc: 17
File của em có 2 sheet TKB và TH. Sheet TKB là thời khóa biểu theo tiết của lớp. Em muốn lọc dữ liệu sang sheet TH để biết thời khóa biểu theo giáo viên (như file đính kèm). Nhờ các anh chị lập giùm công thức. Em cám ơn ạ!
Tham khảo, sheet TH, tại D7
Mã:
=IFERROR(INDEX(Xep!$C$6:$Y$29&"_"&Xep!$C$5:$Y$5,COLUMNS($D7:D7),MATCH($C7,INDEX(Xep!$D$6:$Z$29,COLUMNS($D7:D7),),0)),"")
 
File của em có 2 sheet TKB và TH. Sheet TKB là thời khóa biểu theo tiết của lớp. Em muốn lọc dữ liệu sang sheet TH để biết thời khóa biểu theo giáo viên (như file đính kèm). Nhờ các anh chị lập giùm công thức. Em cám ơn ạ!
Góp vui bằng 1 giải pháp VBA cho bạn nào muốn tham khảo.
Mã:
Option Explicit

Sub LocTKB()
Dim i&, j&, Lr&, R&, t&, k&
Dim Arr(), KQ(), TenGV(), Lop()
Dim Dic As Object, Key
Dim Ws As Worksheet, Sh As Worksheet
Set Sh = Sheets("Xep")
Set Ws = Sheets("TH")
Lr = Ws.Cells(10000, 3).End(xlUp).Row
TenGV = Ws.Range("C7:C" & Lr).Value
Set Dic = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(TenGV)
    Key = UCase(TenGV(i, 1))
    If Not Dic.Exists(Key) Then t = t + 1: Dic.Add (Key), t
Next i
ReDim KQ(1 To t, 1 To 24)
Lr = Sh.Cells(10000, 2).End(xlUp).Row
Arr = Sh.Range("C6:Z" & Lr).Value
Lop = Sh.Range("C5:Z5").Value
For R = 1 To UBound(Arr) Step 4
    For i = R To R + 3
        For j = 2 To UBound(Arr, 2) Step 2
            If Arr(i, j) <> Empty And Dic.Exists(UCase(Arr(i, j))) Then
                k = Dic.Item(UCase(Arr(i, j)))
                KQ(k, i) = Arr(i, j - 1) & "-" & Lop(1, j - 1)
            End If
        Next j
    Next i
Next R
Ws.Range("D7").Resize(t, 24).ClearContents
Ws.Range("D7").Resize(t, 24) = KQ
Set Dic = Nothing
MsgBox "Thành công"
End Sub
 
Web KT
Back
Top Bottom