Các bác giúp em tính chế độ cho học sinh được hưởng từ sheet data có sẵn với ạ

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Tình hình là ở địa phương em học sinh dân tộc, vùng đặc biệt khó khăn được hưởng nhiều chế độ tuy nhiên giáo viên lại ít có điều kiện nghiên cứu dẫn đến đôi khi chi trả không chính xác, nên e đã tổng hợp các chế độ vào sheet data nhưng em muốn tạo 1 sheet để trình bày đơn giản kết quả dưới dạng nhập xuất (sheet ket qua) cho giáo viên dễ dàng xác định. Do trình độ có hạn nên e chưa biết cách làm, tức là ở phần nhập dữ liệu e muốn để dạng combo box để lựa chọn giá trị dễ dàng hơn chứ không phải dạng filter ạ. Còn phần hiển thị kết quả, e muốn thay đối kết quả ngay khi mình thay đổi giá trị phần khai báo ạ (trong file bác làm e ko thấy thay đổi ah), mong các bác diễn đàn giúp em ạ!

1. Phần nhập liệu bạn cứ làm dạng Data validation như #2 thì ổn hơn , đã không biết thì…đừng có màu mè làm gì cho mệt. Làm cái đơn giản để hiểu rồi thì từ từ mới làm cái cao siêu hơn, comboxbox chi cho mệt xác….
2. Về phần kết quả thì tôi viết cho bạn đoạn code tìm chính xác, chứ không có trường hợp cái này nằm trong cái kia như bạn nói…………. Tốt nhất bạn nên liệt kê những trường hợp nào là nằm trong cái nào………để ai đó giúp bạn thì có thể hiểu hơn!
————————————————————————

Bạn chọn thay đổi giá trị tại bất cứ cell nào từ B3->B10 thì code sẽ chạy. Điều kiện của 4 trường cuối cùng nếu chọn: tất cả các nhóm,…

Thì sẽ chạy lên hết các trường hợp.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address = "$B$3" Or Target.Address = "$B$4" Or Target.Address = "$B$5" Or Target.Address = "$B$6" _
Or Target.Address = "$B$7" Or Target.Address = "$B$8" Or Target.Address = "$B$9" Or Target.Address = "$B$10" Then
Dim Sh As Worksheet, Arr()
Dim Rws As Long, J&, W&, dk1 As String, dk2 As String, dk3 As String, dk4 As String, dk5 As String, dk6 As String, _
dk7 As String, dk8 As String, dk51 As String, dk61 As String, dk71 As String, dk81 As String
    dk1 = [B3].Value
    dk2 = [B4].Value
    dk3 = [B5].Value
    dk4 = [B6].Value
    dk5 = [B7].Value
    dk6 = [B8].Value
    dk7 = [B9].Value
    dk8 = [B10].Value
    dk51 = [K2].Value
    dk61 = [L2].Value
    dk71 = [M2].Value
    dk81 = [N2].Value
    Set Sh = Sheet1
    With Sh.[A2]
        Rws = .CurrentRegion.Rows.Count
        Arr() = .Resize(Rws, 13).Value
    End With

ReDim dArr(1 To Rws, 1 To 4)
    For J = 1 To UBound(Arr())

If dk5 = dk51 Then
        If (Arr(J, 2) = dk1 Or dk1 = Empty) And (Arr(J, 3) = dk2 Or dk2 = Empty) And (Arr(J, 4) = dk3 Or dk3 = Empty) _
        And (Arr(J, 5) = dk4 Or dk4 = Empty) And (Arr(J, 7) = dk6 Or dk6 = Empty) And (Arr(J, 8) = dk7 Or dk7 = Empty) _
        And (Arr(J, 9) = dk8 Or dk8 = Empty) Then
        W = 1 + W
            dArr(W, 1) = Arr(J, 11)
            dArr(W, 2) = Arr(J, 12)
            dArr(W, 3) = Arr(J, 13)
            dArr(W, 4) = Arr(J, 1)
        End If
    ElseIf dk6 = dk61 Then
        If (Arr(J, 2) = dk1 Or dk1 = Empty) And (Arr(J, 3) = dk2 Or dk2 = Empty) And (Arr(J, 4) = dk3 Or dk3 = Empty) _
        And (Arr(J, 5) = dk4 Or dk4 = Empty) And (Arr(J, 6) = dk5 Or dk5 = Empty) And (Arr(J, 8) = dk7 Or dk7 = Empty) _
        And (Arr(J, 9) = dk8 Or dk8 = Empty) Then
        W = 1 + W
            dArr(W, 1) = Arr(J, 11)
            dArr(W, 2) = Arr(J, 12)
            dArr(W, 3) = Arr(J, 13)
            dArr(W, 4) = Arr(J, 1)
        End If
    ElseIf dk7 = dk71 Then
        If (Arr(J, 2) = dk1 Or dk1 = Empty) And (Arr(J, 3) = dk2 Or dk2 = Empty) And (Arr(J, 4) = dk3 Or dk3 = Empty) _
        And (Arr(J, 5) = dk4 Or dk4 = Empty) And (Arr(J, 6) = dk5 Or dk5 = Empty) And (Arr(J, 7) = dk6 Or dk6 = Empty) _
        And (Arr(J, 9) = dk8 Or dk8 = Empty) Then
        W = 1 + W
            dArr(W, 1) = Arr(J, 11)
            dArr(W, 2) = Arr(J, 12)
            dArr(W, 3) = Arr(J, 13)
            dArr(W, 4) = Arr(J, 1)
        End If
    ElseIf dk8 = dk81 Then
        If (Arr(J, 2) = dk1 Or dk1 = Empty) And (Arr(J, 3) = dk2 Or dk2 = Empty) And (Arr(J, 4) = dk3 Or dk3 = Empty) _
        And (Arr(J, 5) = dk4 Or dk4 = Empty) And (Arr(J, 6) = dk5 Or dk5 = Empty) And (Arr(J, 7) = dk6 Or dk6 = Empty) _
        And (Arr(J, 8) = dk7 Or dk7 = Empty) Then
        W = 1 + W
            dArr(W, 1) = Arr(J, 11)
            dArr(W, 2) = Arr(J, 12)
            dArr(W, 3) = Arr(J, 13)
            dArr(W, 4) = Arr(J, 1)
        End If
    Else
        If (Arr(J, 2) = dk1 Or dk1 = Empty) And (Arr(J, 3) = dk2 Or dk2 = Empty) And (Arr(J, 4) = dk3 Or dk3 = Empty) _
        And (Arr(J, 5) = dk4 Or dk4 = Empty) And (Arr(J, 6) = dk5 Or dk5 = Empty) And (Arr(J, 7) = dk6 Or dk6 = Empty) _
        And (Arr(J, 8) = dk7 Or dk7 = Empty) And (Arr(J, 9) = dk8 Or dk8 = Empty) Then
            W = 1 + W
            dArr(W, 1) = Arr(J, 11)
            dArr(W, 2) = Arr(J, 12)
            dArr(W, 3) = Arr(J, 13)
            dArr(W, 4) = Arr(J, 1)
        End If
    End If
    Next J
    If W Then
        Sheet2.[A15].Resize(65000, 4).ClearContents
        Sheet2.[A15].Resize(W, 4).Value = dArr()
    End If
End If
Application.ScreenUpdating = True
End Sub

www.giaiphapexcel.com/diendan/threads/c%C3%A1c-b%C3%A1c-gi%C3%BAp-em-t%C3%ADnh-ch%E1%BA%BF-%C4%91%E1%BB%99-cho-h%E1%BB%8Dc-sinh-%C4%91%C6%B0%E1%BB%A3c-h%C6%B0%E1%BB%9Fng-t%E1%BB%AB-sheet-data-c%C3%B3-s%E1%BA%B5n-v%E1%BB%9Bi-%E1%BA%A1.106799/#post-664514

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Bình luận

Quảng cáo

Cũ vẫn chất

Xem thêm